阅读 404

手把手教你在Windows和Linux下安装Redis及了解Redis基本操作|8月更文挑战

Windows 环境下安装Redis

1. 解压redis-windows

image.png

2. 配置redis-windows

image-20210723164842568

修改redis.windows.conf

image.png 在底部添加上这两行,代表最大内存和设置密码。

然后在命令行模式下进入解压后的redis目录,键入下面命令

redis-server.exe redis.windows.conf

image-20210723165539985

然后在打开一个命令行窗口,键入redis-cli.exe

然后就打开客户端了。

image-20210723165702072

image-20210723165753849

然后输入auth 密码就可以连接服务端了。

image-20210723165837940

输入PING,如果返回PONG,那么就说明连接成功!如果这样的话,恭喜你!

Linux环境下安装Redis

终端输入sudo apt install redis

image-20210723173524306

然后就输入redis-cli进入客户端即可。

redis字符串操作

  1. 设置键值:name:ReganYue set name ReganYue

  2. 获取值:get name

image-20210723183204616

  1. 设置持续20秒的键值:setex wife 20 bingbing

image-20210723183447335

  1. 设置多个键值mset(m代表multiple):mset name Regan wife bingbing age 18

  2. 一次获取多个键值:mget name wife age

image-20210723183811234

  1. 将值增加/减少1:

    127.0.0.1:6379> incr age
    (integer) 19
    127.0.0.1:6379> decr age
    (integer) 18
    复制代码
  2. 将值增加5:

    127.0.0.1:6379> incrby age 5
    (integer) 23
    127.0.0.1:6379> get age
    "23"
    复制代码
  3. 将值减少10:

    127.0.0.1:6379> decrby age 10
    (integer) 13
    127.0.0.1:6379> get age
    "13"
    复制代码
  4. 将名字增加Yue

    127.0.0.1:6379> append name Yue
    (integer) 8
    127.0.0.1:6379> get name
    "ReganYue"
    复制代码
  5. 获取字符串长度

    127.0.0.1:6379> get name
    "ReganYue"
    127.0.0.1:6379> strlen name
    (integer) 8
    复制代码
  6. 当键不存在时才能添加该键值对

    127.0.0.1:6379> setnx name yy
    (integer) 0
    127.0.0.1:6379> setnx name1 yy
    (integer) 1
    复制代码
  7. 同时添加多个键值对,当所有键都不存在时才能添加该键值对

127.0.0.1:6379> msetnx name gg age 1 wife bing
(integer) 0
127.0.0.1:6379> msetnx myname gg myage 1 mywife bing
(integer) 1
127.0.0.1:6379> mget myname myage mywife
1) "gg"
2) "1"
3) "bing"
复制代码
  • 返回1 说明如果所有的key被set
  • 返回0 说明没有key被set(至少其中有一个key是本来就存在的)
  1. PSETEX
psetex name 5000 ReganYue
复制代码

PSETEX和SETEX一样,唯一的区别是到期时间以毫秒为单位,而不是秒。

  1. 截取字符串getrange
127.0.0.1:6379> getrange name 0 2
"Reg"
127.0.0.1:6379> getrange name -1 -3
""
127.0.0.1:6379> getrange name -3 -1
"gan"
复制代码

Redis之Key键操作

  1. 显示所有键

    127.0.0.1:6379> keys *
    1) "age"
    2) "wife"
    3) "name"
    4) "name1"
    5) "mywife"
    6) "myage"
    7) "myname"
    复制代码
  2. 显示m开头的键

    127.0.0.1:6379> keys m*
    1) "mywife"
    2) "myage"
    3) "myname"
    ​
    复制代码
  3. 显示所有以e结尾的键

    127.0.0.1:6379> keys *e
    1) "age"
    2) "wife"
    3) "name"
    4) "mywife"
    5) "myage"
    6) "myname"
    ​
    复制代码
  4. 判断存在几个键

    127.0.0.1:6379> exists name age
    (integer) 2
    ​
    复制代码

    此处显示2说明存在两个键。

  5. 判断键的类型

    127.0.0.1:6379> type name
    string
    127.0.0.1:6379> type age
    string
    ​
    复制代码
  6. 删除键

    127.0.0.1:6379> del myname mywife
    (integer) 2
    复制代码
  7. 设置键的过期时间

    127.0.0.1:6379> ttl name
    (integer) -1
    127.0.0.1:6379> expire name 10
    (integer) 1
    127.0.0.1:6379> ttl name
    (integer) 8
    127.0.0.1:6379> ttl name
    (integer) 5
    127.0.0.1:6379> ttl name
    (integer) 2
    127.0.0.1:6379> ttl name
    (integer) -2
    复制代码

    ttl name的值为-1表示永不过期,

    -2 表示过期了。

  8. persist 取消键的过期时间

    127.0.0.1:6379> expire age 999
    (integer) 1
    127.0.0.1:6379> ttl age
    (integer) 989
    127.0.0.1:6379> persist age
    (integer) 1
    127.0.0.1:6379> ttl age
    (integer) -1
    ​
    复制代码
  9. rename 重命名

    127.0.0.1:6379> rename age aaaage
    OK
    127.0.0.1:6379> keys *
    1) "wife"
    2) "aaaage"
    3) "name1"
    4) "myage"
    5) "hash1"
    ​
    复制代码

    这个操作十分危险!!!慎用!!!

  10. renamenx

    要更改的键不存在才重命名

  11. 下面说一个非常有趣的randomkey

    127.0.0.1:6379> randomkey
    "name1"
    127.0.0.1:6379> randomkey
    "hash1"
    127.0.0.1:6379> randomkey
    "wife"
    复制代码

Redis之hash操作

  1. hset&hmset

用来设置hash字段值。

hset 一次设置一个字段,hmset一次可以设置多个字段的值。

127.0.0.1:6379> hmset wife3 name bingbing age 12
OK
127.0.0.1:6379> hmset wife2 name bing
OK
127.0.0.1:6379> hmset wife2 age 22
OK
复制代码
  1. hget

返回哈希集中某字段的值

127.0.0.1:6379> hget wife2 name
"bing"
127.0.0.1:6379> hget wife3 name
"bingbing"
复制代码
  1. hmget
127.0.0.1:6379> hmget wife3 name age
1) "bingbing"
2) "12"
​
复制代码

返回哈希集中指定字段的值。

哈希集中没有的字段,就返回 nil

  1. hallget
127.0.0.1:6379> hgetall wife3
1) "name"
2) "bingbing"
3) "age"
4) "12"
复制代码

返回所有键和值的值,并组成一个列表,当哈希集不存在时返回空列表。

  1. hvals
127.0.0.1:6379> hvals wife3
1) "bingbing"
2) "12"
复制代码

返回所有字段值。

  1. hlen
127.0.0.1:6379> hlen wife3
(integer) 2
​
复制代码

返回wife3所有属性数

  1. hexists
127.0.0.1:6379> hexists wife3 name
(integer) 1
127.0.0.1:6379> hexists wife3 money
(integer) 0
复制代码

判断哈希集里面是否存在该键。

  1. hdel
127.0.0.1:6379> hdel wife3 name 
(integer) 1
复制代码

删除哈希集里面的键值对

一次可以删除多个。

  1. hstrlen
127.0.0.1:6379> hset wife3 money 12222222222
(integer) 1
127.0.0.1:6379> hstrlen wife3 money
(integer) 11
复制代码

hstrlen可以求某键的值的长度。

  1. hincrby
127.0.0.1:6379> hincrby wife3 money 11
(integer) 12222222233
复制代码
  1. hincrbyfloat
127.0.0.1:6379> hincrbyfloat wife3 money 0.231231
"12222222233.23123100027441978"
复制代码

Redis之list操作

  1. lpush&rpush

    127.0.0.1:6379> lpush mlist 2
    (integer) 1
    127.0.0.1:6379> lpush mlist 1
    (integer) 2
    127.0.0.1:6379> rpush mlist 3
    (integer) 3
    127.0.0.1:6379> rpush mlist 4 5 6
    (integer) 6
    ​
    复制代码

    lpush表示在列表的左边push进去,rpush表示从列表的右边push进去。

  2. lrange

    127.0.0.1:6379> lrange mlist 0 -1
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "5"
    6) "6"
    复制代码

    表示查看该列表从第一个到最后一个的值。

  3. linsert

    127.0.0.1:6379> lrange mlist 0 -1
    1) "1"
    2) "2"
    3) "2.5"
    4) "3"
    5) "4"
    6) "5"
    7) "6"
    127.0.0.1:6379> linsert mlist after 3 2.
    (integer) 8
    127.0.0.1:6379> lrange mlist 0 -1
    1) "1"
    2) "2"
    3) "2.5"
    4) "3"
    5) "2."
    6) "4"
    7) "5"
    8) "6"
    127.0.0.1:6379> linsert mlist after 3 2.6
    (integer) 9
    127.0.0.1:6379> lrange mlist 0 -1
    1) "1"
    2) "2"
    3) "2.5"
    4) "3"
    5) "2.6"
    6) "2."
    7) "4"
    8) "5"
    9) "6"
    ​
    复制代码

    表示在该列表的某个数后面追加元素。

  4. lset

    127.0.0.1:6379> lset mlist 5 333
    OK
    127.0.0.1:6379> linsert mlist after 3 2.6
    (integer) 10
    127.0.0.1:6379> lrange mlist 0 -1
     1) "1"
     2) "2"
     3) "2.5"
     4) "3"
     5) "2.6"
     6) "2.6"
     7) "333"
     8) "4"
     9) "5"
    10) "6"
    复制代码

    lset表示设置第几个元素为多少。

  5. lpop和rpop

    127.0.0.1:6379> lrange mlist 0 -1
     1) "1"
     2) "2"
     3) "2.5"
     4) "3"
     5) "2.6"
     6) "2.6"
     7) "333"
     8) "4"
     9) "5"
    10) "6"
    127.0.0.1:6379> lpop mlist
    "1"
    127.0.0.1:6379> rpop mlist
    "6"
    127.0.0.1:6379> lrange mlist 0 -1
    1) "2"
    2) "2.5"
    3) "3"
    4) "2.6"
    5) "2.6"
    6) "333"
    7) "4"
    8) "5"
    ​
    复制代码

    如字面意思,就是从列表弹出值,lpop是从左边弹出,rpop是从右边弹出。

  6. ltrim

    127.0.0.1:6379> lrange mlist 0 -1
    1) "2"
    2) "2.5"
    3) "3"
    4) "2.6"
    5) "2.6"
    6) "333"
    7) "4"
    8) "5"
    127.0.0.1:6379> ltrim mlist 1 4
    OK
    127.0.0.1:6379> lrange mlist 0 -1
    1) "2.5"
    2) "3"
    3) "2.6"
    4) "2.6"
    ​
    复制代码

    ltrim是剪切出来然后保存。

  7. mlist

    127.0.0.1:6379> lrange mlist 0 -1
    1) "2.5"
    2) "3"
    3) "2.6"
    4) "2.6"
    127.0.0.1:6379> llen mlist
    (integer) 4
    ​
    复制代码

    求列表的元素个数。

    127.0.0.1:6379> spop mset1

Redis之set操作

  1. sadd

    往set中添加元素

    127.0.0.1:6379> sadd mset 1234 342 234 111
    (integer) 4
    127.0.0.1:6379> sadd mset ni wo ta
    (integer) 3
    127.0.0.1:6379> smembers mset
    1) "342"
    2) "1234"
    3) "ni"
    4) "111"
    5) "234"
    6) "wo"
    7) "ta"
    ​
    复制代码
  2. smembers

    127.0.0.1:6379> smembers mset
    1) "342"
    2) "1234"
    3) "ni"
    4) "111"
    5) "234"
    6) "wo"
    7) "ta"
    ​
    复制代码

    查看集合mset的元素。 0. scard

    127.0.0.1:6379> scard mset
    (integer) 7
    复制代码

    查看集合mset的元素个数

  3. sinter

    127.0.0.1:6379> sadd mset2 a b c d
    (integer) 4
    127.0.0.1:6379> sadd mset2 ni 111
    (integer) 2
    127.0.0.1:6379> sinter mset mset2
    1) "ni"
    2) "111"
    复制代码

    sinter求两集合的并集。

  4. sdiff

    127.0.0.1:6379> sdiff mset mset2
    1) "1234"
    2) "wo"
    3) "234"
    4) "342"
    5) "ta"
    ​
    复制代码

    sdiff求差集 0. sismember

    127.0.0.1:6379> sismember mset 1234
    (integer) 1
    127.0.0.1:6379> sismember mset 12345
    (integer) 0
    复制代码

    看是否是集合中的元素

  5. sdiffstore

    127.0.0.1:6379> sdiffstore mset3 mset mset2
    (integer) 5
    127.0.0.1:6379> smembers mset3
    1) "1234"
    2) "wo"
    3) "234"
    4) "342"
    5) "ta"
    复制代码

    把两个集合的差集存在一个集合里面。

  6. smove

    127.0.0.1:6379> smove mset2 mset1 a
    (integer) 1
    127.0.0.1:6379> smembers mset2
    1) "c"
    2) "ni"
    3) "b"
    4) "111"
    5) "d"
    127.0.0.1:6379> smembers mset1
    1) "a"
    ​
    复制代码

    将mset2里面的元素a移到mset1里面。

  7. spop

随机弹出一个或多个

127.0.0.1:6379> spop mset1
"a"
127.0.0.1:6379> spop mset1
(nil)
127.0.0.1:6379> spop mset2
"b"
127.0.0.1:6379> spop mset2
"ni"
127.0.0.1:6379> spop mset2 3
1) "c"
2) "d"
3) "111
复制代码

Redis之zset

  1. zadd

    127.0.0.1:6379> zadd MZ 10 Regan 8 jackmac 9 bill 12 jobs 
    (integer) 4
    127.0.0.1:6379> zrange MZ 0 -1 
    1) "jackmac"
    2) "bill"
    3) "Regan"
    4) "jobs"
    复制代码

    添加元素及其权重到zset里面。

  2. zrange

    127.0.0.1:6379> zrange MZ 0 -1 
    1) "jackmac"
    2) "bill"
    3) "Regan"
    4) "jobs"
    复制代码

    查看所有元素。

  3. zcard

    127.0.0.1:6379> zrange MZ 0 -1 
    1) "jackmac"
    2) "bill"
    3) "Regan"
    4) "jobs"
    127.0.0.1:6379> zcard MZ
    (integer) 4
    ​
    复制代码

    zcard可以查看zset的元素个数。

  4. zcount

    127.0.0.1:6379> zadd MZ 10 Regan 8 jackmac 9 bill 12 jobs 
    (integer) 4
    127.0.0.1:6379> zcount MZ 9 10
    (integer) 2
    ​
    复制代码

    查看所在权重范围的个数。

  5. zscore

    127.0.0.1:6379> zscore MZ Regan
    "10"
    ​
    复制代码

查看元素的权重。

  1. zinterstore

    127.0.0.1:6379> zinterstore iz 2 MZ mz2
    (integer) 1
    127.0.0.1:6379> zrange iz 0 -1
    1) "Regan"
    ​
    复制代码

将两个zset合并并保存。

  1. zunionstore
127.0.0.1:6379> zunionstore uz 2 iz mz2
(integer) 3
127.0.0.1:6379> zrange uz 0 -1 
1) "xiao"
2) "jackma"
3) "Regan"
127.0.0.1:6379> zscore uz xiao
"1"
127.0.0.1:6379> zscore uz Regan
"30"
​
复制代码

zunionstore是求并集,并且会将相同元素的权重相加。

  1. zrank&zrevrank
127.0.0.1:6379> zrange uz 0 -1
1) "xiao"
2) "jackma"
3) "Regan"
127.0.0.1:6379> zrank uz xiao
(integer) 0
127.0.0.1:6379> zrevrank uz xiao
(integer) 2
​
复制代码

zrank是求zset内元素的编号。

zrevrank是求zset内元素逆序编号。

文章分类
后端
文章标签