概述

基础知识

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 切换数据库
select 1
select 2
# 查看当前数据库的key数量
dbsize
# 查看当前库所有key
keys *
# 判断key是否存在
exists key
# 查看key的类型
type key
# 删除指定key
del name
# 指定key过期时间
expire key 10
# 获取key过期时间(秒,-1永不过期,-2已经过期)
ttl key
# 清空当前数据库
flushdb
# 清空全部数据库
flushall
# 扫描数据库
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

基础5种类型

String(字符串)

SET(设置值)

格式: SET key value [NX | XX] [GET] [EX | PX | EXAT | PXAT | KEEPTTL]

版本:1.0.0

其它选项:

  • EX seconds – 设置指定的到期时间,以秒为单位(正整数)。
  • PX milliseconds – 设置指定的过期时间,以毫秒为单位(正整数)。
  • EXAT timestamp-seconds – 设置密钥过期的指定 Unix 时间,以秒为单位(正整数)。
  • PXAT timestamp-milliseconds – 设置密钥过期的指定 Unix 时间,以毫秒为单位(正整数)。
  • NX– 仅设置尚不存在的密钥。
  • XX– 仅设置已存在的密钥。
  • KEEPTTL– 保留与密钥关联的生存时间。
  • GET– 返回存储在 key 中的旧字符串,如果 key 不存在,则返回 nil。如果存储在 key 的值不是字符串,则返回并中止错误。
1
2
3
4
5
6
7
8
9
10
11
12
#设置值,有key存在则覆盖,且清除过期时间
> SET name zhangsan
"OK"
#设置值,仅key不存在时
> SET name lisi NX
(nil)
#设置值,仅key存在时
> SET name lisi XX
"OK"
#设置值,并返回旧的值
> SET name wangwu GET
"lisi"

MSET(设置多个值)

格式:MSET key value [key value ...]

版本:1.0.1

描述:设置多个键值对,该操作是原子性的。原子性:表示任何一个设置失败,其他都失败

1
2
> MSET key1 10086 key2 10010
"OK"

SETEX(按秒过期)

格式:SETEX key seconds value

版本:2.0.0

描述:以为单位设置key过期时间。从 Redis 版本 2.6.12 开始,此命令被视为已弃用。可以将其替换为带有EX参数数的 SET

1
2
3
4
5
> SETEX name 10 longlong
"OK"

> TTL name
(integer) 8

PSETEX(按毫秒过期)

格式:PSETEX key milliseconds value

版本:2.6.0

描述:以毫秒为单位指定key过期时间。从 Redis 版本 2.6.12 开始,此命令被视为已弃用。可以将其替换为带有PX参数数的 SET

1
2
3
4
5
> PSETEX name 10000 zhangsan
"OK"

> PTTL name
(integer) 4976

MSETNX(设置多个值且不存在)

格式:MSETNX key value [key value ...]

版本:1.0.1

描述:设置多个键值对,且任何key都必须不存在,该操作是原子性的。

1
2
3
4
5
> MSET key1 10086 key2 10010
"OK"

> MSETNX key2 12345 key3 12306
(integer) 0

SETNX(不存在则添加)

版本:1.0.0

格式:SETNX key value

描述:如果不存在则设置从 Redis 版本 2.6.12 开始,此命令被视为已弃用。可以将其替换为带有NX参数的 SET。Redis分布式锁的原理就是这个命令。

1
2
3
4
5
> SET name zhangsan
"OK"

> SETNX name lisi
(integer) 0

GET(获取值)

格式:GET key

版本:1.0.0

描述:获取key的值,如果key不存在,则返回特殊值。如果存储的值不是字符串,则返回错误,因为仅处理字符串值。

1
2
> GET name
"wangchao10086"

GETSET(获取并设置值)

格式:GETSET key value

描述:获取key的旧值并设置一个新的值,从 Redis 版本 6.2.0 开始,此命令被视为已弃用,可以用SET key GET替换。

1
2
3
4
> GETSET name lisi
"zhangsan"
> SET name zhangsan get
"lisi"

MGET(获取多个值)

格式:MGET key [key ...]

版本:1.0.0

描述:返回所有指定键的值,对于不包含字符串值或不存在的键,返回特殊值"null"。因此,操作永远不会失败。

1
2
3
4
5
6
7
> MSET key1 10086 key2 10010
"OK"

> MGET key1 key2 key3
1) "10086"
2) "10010"
3) "null"

GETDEL(获取并删除)

格式:GETDEL key

版本:6.2.0

描述:获取key的值并删除密钥(当且仅当密钥的值类型为字符串时),不存在则返回特殊类型nil

1
2
3
4
5
6
7
8
> SET name QQ
"OK"

> GETDEL name
"QQ"

> GET name
(nil)

GETEX(获取并设置有效期)

格式:GETEX key [EX | PX | EXAT | PXAT | PERSIST]

版本:6.2.0

描述:获取key的值并选择性地设置其过期时间

选项:

  • EX seconds – 设置指定的到期时间(以秒为单位)。
  • PX milliseconds – 设置指定的过期时间(以毫秒为单位)。
  • EXAT timestamp-seconds – 设置密钥过期的指定 Unix 时间,以秒为单位。
  • PXAT timestamp-milliseconds – 设置密钥过期的指定 Unix 时间,以毫秒为单位。
  • PERSIST – 删除key的过期时间,即:设置key永不过期。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
> GET name
"zhangsan"

> TTL name
(integer) -1

> GETEX name ex 10
"zhangsan"

> TTL name
(integer) 7

# 删除过期时间
> GETEX name PERSIST
"zhangsan"

> TTL name
(integer) -1

GETRANGE(截取)

格式:GETRANGE key start end

版本:2.4.0

描述:获取子字符串,正序从0开始,倒序从-1开始,-1表示倒数第一个,-2是倒数第二个,以此类推。如果取字符串的后5个字符,应该是GETRANGE key -5 -1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> GET name
"zhangsan"

> GETRANGE name 1 2
"ha"

> GETRANGE name 0 -1
"zhangsan"

> GETRANGE name 0 -2
"zhangsa"

# 无效偏移量
> GETRANGE name -1 2
""

SUBSTR(子字符串)

格式:SUBSTR key start end

版本:1.0.0

描述:获取子字符串。从 Redis 版本 2.0.0 开始,此命令被视为已弃用,可以将其替换为 GETRANGE

1
2
3
4
5
6
7
8
> SET name "hello java"
"OK"

> GETRANGE name 0 100
"hello java"

> GETRANGE name -4 -1
"java"

APPEND(拼接)

格式:APPEND key value

版本:2.0.0

描述:如果已存在并且是字符串,则此命令将 字符串的末尾。 如果不存在,则将其创建并设置为字符串。

1
2
3
4
5
> APPEND name 10086
(integer) 13

> GET name
"wangchao10086"

SETRANGE(覆写值)

格式:SETRANGE key offset value

版本:2.2.0

描述:从指定偏移量开始,覆盖key后面的字符。如果超过键值范围,则用0填充后再覆盖。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
> SET key1 "Hello World"
"OK"

> SETRANGE key1 6 Redis
(integer) 11

> GET key1
"Hello Redis"
# 超出了值的范围,填充0,然后再覆盖
> SETRANGE key1 16 Redis
(integer) 21

> GET key1
"Hello Redis00000Redis"

STRLEN(获取值长度)

格式:STRLEN key

版本:2.2.0

描述:获取key值的长度

1
2
3
4
5
> SET name zhangsan
"OK"

> STRLEN name
(integer) 8

INCR(递增)

格式:INCR key

版本:1.0.0

描述:必须是64 位有符号 integer ,如果key不存在,默认从0开始递,步长默认是1。

1
2
3
4
5
> SET age 18
"OK"

> INCR age
(integer) 19

INCRBY(步长递增)

格式:INCRBY key increment

版本:1.0.0

描述:按照给定的值递增

1
2
> INCRBY age 2
(integer) 21

INCRBYFLOAT(浮点数递增)

格式:INCRBYFLOAT key increment

版本:2.6.0

描述:浮点数递增,给定值必须能解析成双精度浮点数(double)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
> SET age 18
"OK"

> INCRBYFLOAT age 0.5
"18.5"

> INCRBYFLOAT age 0.51
"19.01"

> INCRBYFLOAT age 0.511
"19.521"

> INCRBYFLOAT age 1
"20.521"

DECR(递减)

格式:DECR key

版本:1.0.0

描述: 必须是64 位有符号 integer ,如果key不存在,默认从0开始递,步长默认是1。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
> DECR age
(integer) 99

> SET age -1
"OK"

> DECR age
(integer) -2

--------错误类型--------------
> GET name
"wangchao10086"
> DECR name
"ERR value is not an integer or out of range"

---------超出最大限制---------
> SET age 234293482390480948029348230948
"OK"

> DECR age
"ERR value is not an integer or out of range"

DECRBY(步长递减)

格式:DECRBY key decrement

版本:1.0.0

描述:按照给定的值递减

1
2
3
4
5
6
7
8
> SET age 100
"OK"

> DECRBY age 3
(integer) 97

> DECR age
(integer) 96

LCS(求近似值)

格式:LCS key1 key2 [LEN] [IDX] [MINMATCHLEN] [WITHMATCHLEN]

版本:7.0.0

描述:求两个字符串的近似值

选项:

  • LEN:获取近似值的长度
  • LDX:获取近似值中每个字符所在位置
  • MINMATCHLEN:给定最小长度匹配近似值
  • WITHMATCHLEN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
> MSET key1 ohmytext key2 mynewtext
OK

> LCS key1 key2
"mytext"

# 求近似值的长度
> LCS key1 key2 LEN
(integer) 6

# 比较近似值中每个字符出现的位置
> LCS key1 key2 IDX
1) "matches"
2) 1) 1) 1) "4"
2) "7"
2) 1) "5"
2) "8"
2) 1) 1) "2"
2) "3"
2) 1) "0"
2) "1"
3) "len"
4) "6"
#上面直接看第二项 2),结果是个数组,匹配到两组近似值;
#第一组近似值是第一个key的索引4-7,匹配到第二个key的索引5-8,即:text;
#第二组近似值是第一个key的索引2-3,匹配到第二个key的索引0-1,即:my;
#倒着加在一起就是mytext

# 给定最小长度,再比较近似值在每个字符串中出现的位置
> LCS key1 key2 IDX MINMATCHLEN 4
1) "matches"
2) 1) 1) 1) "4"
2) "7"
2) 1) "5"
2) "8"
3) "len"
4) "6"

# 在上面的基础上,再返回近似值的长度,数组最后一项是长度
> LCS key1 key2 IDX MINMATCHLEN 4 WITHMATCHLEN
1) "matches"
2) 1) 1) 1) "4"
2) "7"
2) 1) "5"
2) "8"
3) "4"
3) "len"
4) "6"

List(列表)

Redis 列表是字符串值的链表。 Redis 列表经常用于:

  • 实现堆栈和队列。
  • 为后台工作器系统构建队列管理。

基本命令

  • LPUSH 将新元素添加到列表的头部;RPUSH添加到尾巴上。
  • LPOP 从列表的头部删除并返回一个元素;RPOP 执行相同的操作,但从列表的尾部开始。
  • LLEN 返回列表的长度。
  • LMOVE以原子方式将元素从一个列表移动到另一个列表。
  • LTRIM 将列表缩小到指定的元素范围。

阻止命令

列表支持多个阻塞命令。 例如:

  • BLPOP 从列表的头部删除并返回一个元素。 如果列表为空,则命令将阻塞,直到元素变为可用或达到指定的超时。
  • BLMOVE 以原子方式将元素从源列表移动到目标列表。 如果源列表为空,则该命令将阻塞,直到新元素可用。

命令大全

LPUSH(左添加)

格式:LPUSH key element [element ...]

版本:1.0.0

描述:将所有指定的值插入列表的头部,先入后出。列表不存在时则自动创建,然后再插入值。

1
2
3
4
5
6
7
8
9
10
> LPUSH name zhangsan
(integer) 1

> LPUSH name list wangwu
(integer) 3

> LRANGE name 0 -1
1) "wangwu"
2) "list"
3) "zhangsan"

LPUSHX(左添加·X)

格式:LPUSHX key element [element ...]

版本:2.2.0

描述:与LPUSH 不同之处在于,列表不存在时,不会创建,会插入失败。

1
2
3
4
5
> LRANGE age 0 -1
(empty list or set)

> LPUSHX age 11 12
(integer) 0

RPUSH(右添加)

格式:RPUSH key element [element ...]

版本:1.0.0

描述:将所有指定的值插入列表的尾部,列表不存在时则自动创建,然后再插入值。

1
2
3
4
5
6
7
> RPUSH mylist "hello"
(integer) 1
> RPUSH mylist "world"
(integer) 2
> LRANGE mylist 0 -1
1) "hello"
2) "world"

RPUSHX(右添加·X)

格式:RPUSHX key element [element ...]

版本:2.2.0

描述:与RUSH 不同之处在于,列表不存在时,不会创建,会插入失败。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> RPUSH mylist "Hello"
(integer) 1

> RPUSHX mylist "World"
(integer) 2

> RPUSHX myotherlist "World"
(integer) 0

> LRANGE mylist 0 -1
1) "Hello"
2) "World"

> LRANGE myotherlist 0 -1
(empty array)

LLEN(列表长度)

格式:LLEN key

版本:1.0.0

描述:返回列表长度。如果key不存在返回0,key存在且不是列表则报错。

1
2
> LLEN sql
(integer) 5

LINDEX(获取元素)

格式:LINDEX key index

版本:1.0.0

描述:根据索引获取元素

1
2
3
4
5
6
7
8
> LPUSH names zhang wang
(integer) 2

> LINDEX names 0
"wang"

> LINDEX names 1
"zhang"

LINSERT(指定元素前后插入)

格式:LINSERT key <BEFORE | AFTER> pivot element

版本:2.2.0

描述:在列表中指定元素的前面或后面插入元素。如果key不存在,没有任何操作;如果key存在且不是列表类型,则报错。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
> LPUSH sql mysql redis mongodb
(integer) 3

> LINSERT sql AFTER 'mysql' sqlserver
(integer) 4

> LRANGE sql 0 10
1) "mongodb"
2) "redis"
3) "mysql"
4) "sqlserver"

> LINSERT sql BEFORE 'mysql' db2
(integer) 5

> LRANGE sql 0 10
1) "mongodb"
2) "redis"
3) "db2"
4) "mysql"
5) "sqlserver"

LRANGE(范围查找)

格式:LRANGE key start stop

版本:1.0.0

描述:返回存储在列表中指定偏移量的元素。偏移量也可以是负数,表示从列表末尾开始。例如,-1是列表的最后一个元素,-2是倒数第二个元素,以此类推。超出列表索引范围不会产生错误。

1
2
3
4
5
6
7
8
9
10
11
> LRANGE mylist 0 10
1) "one"
2) "two"

# -1表示最后一个,但是不能倒序查询,所以为空
> LRANGE mylist -1 -10
(empty list or set)

> LRANGE mylist -10 -1
1) "one"
2) "two"

LPOS(获取元素索引)

格式:LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]

版本:6.0.6

描述:返回给定元素在列表中的索引。

  • RANK:你想要几个匹配的索引。1:第一个,2:第二个,以此类推。
  • COUNT:你想要几个索引。1:1个,2:2个,以此类推。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
> LRANGE mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "1"
5) "2"
6) "3"
7) "c"
8) "c"

# 返回第一个c的索引
> LPOS mylist c
(integer) 2

# 返回第二个c的索引
> LPOS mylist c RANK 2
(integer) 6

# 返回倒数第一个c的索引
> LPOS mylist c RANK -1
(integer) 7

# 返回倒数第二个c的索引
> LPOS mylist c RANK -2
(integer) 6

# 从尾部开始匹配,返回两个c的索引
> LPOS mylist c RANK -1 COUNT 2
1) "7"
2) "6"

# 返回所有c的索引
> LPOS mylist c COUNT 0
1) "2"
2) "6"
3) "7"

LREM(删除)

格式:LREM key count element

版本:1.0.0

描述:从列表中删除首次出现的元素等于 存储在 。 该参数通过以下方式影响操作:

  • count > 0:从头到尾移动删除相当于element的元素,只删一个。
  • count < 0:从尾部移动到头部删除相当于element的元素,只删一个。
  • count = 0:删除所有等于element的元素。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
> lrange mylist 0 10
1) "one"
2) "one"
3) "two"
4) "one"
5) "one"

# 删除从头开始第一个
> LREM mylist 1 one
(integer) 1

> lrange mylist 0 10
1) "one"
2) "two"
3) "one"
4) "one"

# 删除倒数第一个
> LREM mylist -1 one
(integer) 1

> lrange mylist 0 10
1) "one"
2) "two"
3) "one"

# 删除所有
> LREM mylist 0 one
(integer) 2

> lrange mylist 0 10
1) "two"

LSET(覆盖元素)

格式:LSET key index element

版本:1.0.0

描述:覆盖列表中指定index 位置的元素值为 element。LSET如果索引不存在会报错。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
> LRANGE mylist 0 10
1) "two"

# 把two编程了one
> LSET mylist 0 one
"OK"

# 报错:超出列表范围
> LSET mylist 1 two
"ERR index out of range"

# 添加一个元素
> LPUSH mylist two
(integer) 2

# 再次SET,没报错
> LSET mylist 1 three
"OK"

# 获取列表
> LRANGE mylist 0 10
1) "two"
2) "three"

LTRIM(截取)

格式:LTRIM key start stop

版本:1.0.0

描述:根据索引范围截取列表。start可以是负数,表示从末尾开始。超过范围的下标并不会产生错误:如果 start 超过列表尾部,或者 start > end,结果会是列表变成空表(即该 key 会被移除)。 如果 end 超过列表尾部,Redis 会将其当作列表的最后一个元素。

1
2
3
4
5
6
7
8
9
10
11
> LPUSH str 1 2 3 4 5 6
(integer) 6

> LTRIM str 2 5
"OK"

> LRANGE str 0 10
1) "4"
2) "3"
3) "2"
4) "1"

LMOVE(移动)

格式:LMOVE source destination <LEFT | RIGHT> <LEFT | RIGHT>

版本:6.2.0

描述:将列表source 的第一个或最后一个元素移动到列表destination 的第一个或最后一个元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> LPUSH list1 a b c
(integer) 3

> LPUSH list2 x y z
(integer) 3

# 将list1的第一个元素移动到list2的最后一个元素
> LMOVE list1 list2 LEFT RIGHT
"c"

> LRANGE list2 0 10
1) "z"
2) "y"
3) "x"
4) "c"

BLMOVE(阻塞·移动)

格式:BLMOVE source destination <LEFT | RIGHT> <LEFT | RIGHT> timeout

版本:6.2.0

描述:BLMOVELMOVE 的阻塞变体。 当source包含元素时,此命令的行为与 LMOVE 完全相同。 在 MULTI/EXEC 块中使用时,此命令的行为与 LMOVE 完全相同。 当source为空时,Redis 将阻止连接,直到另一个客户端推送到它或直到timeout(指定要阻止的最大秒数的双精度值)。timeout0表示无限期阻塞。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
> LPUSH list1 a b c
(integer) 3

> LPUSH list2 x y z
(integer) 3

# 移动元素
> BLMOVE list1 list2 LEFT RIGHT 1
"c"

> LRANGE list2 0 10
1) "z"
2) "y"
3) "x"
4) "c"

# 删除列表list1
> del list1
(integer) 1

# 再去移动,设置超时时间大一点,发现命令阻塞了
> BLMOVE list1 list2 LEFT RIGHT 1000000
Executing command...

# 通过另一个连接创建列表list1
LPUSH list1 blob

# 此时阻塞的命令恢复了
> BLMOVE list1 list2 LEFT RIGHT 1000000
"blob"

LPOP(弹出·左)

格式:LPOP key [count]

版本:1.0.0

描述:从列表头部开始,删除并返回列表的头部1个元素。count可选,表示要删除几个。

1
2
3
4
5
6
7
8
9
10
11
12
13
> LPUSH list 1 2 3 4 5
(integer) 5

> LPOP list
"5"

> LPOP list 2
1) "4"
2) "3"

> LRANGE list 0 10
1) "2"
2) "1"

BLPOP(阻塞·左弹出)

格式:BLPOP key [key ...] timeout

版本:2.0.0

描述:它是 LPOP 的阻塞版本,按给定key的顺序,弹出第一个非空列表的头元素。如果给定key的所有列表为空,则等待超时时间结束后返回空。如果超时时间内有另一个客户端往给定key的列表里面添加了值,则立即返回这个key的名称和值。

1
2
3
4
5
6
7
# a,b,c三个列表都不存在,阻塞中
> BLPOP a b c 10
Executing command...
# 等待10秒后超时返回nil
> BLPOP a b c 10
(nil)

RPOP(弹出·右)

格式:RPOP key [count]

版本:1.0.0

描述:从列表尾部开始,删除并返回列表的尾部1个元素。count可选,表示要删除几个。

1
2
3
4
5
6
7
8
9
10
> RPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
> RPOP mylist
"five"
> RPOP mylist 2
1) "four"
2) "three"
> LRANGE mylist 0 -1
1) "one"
2) "two"

BRPOP(阻塞·右弹出)

格式:BRPOP key [key ...] timeout

版本:2.0.0

描述:按给定key的顺序,弹出第一个非空列表的尾部一个元素,在指定timeout范围内,列表全是空时会阻塞,超时返回空。

1
2
3
4
5
6
7
# a,b,c三个列表都不存在,阻塞中
> BRPOP a b c 10
Executing command...
# 另一个redis连接往a中添加了一个hhhhh元素,阻塞的连接恢复了
> BRPOP a b c 100
1) "a"
2) "hhhhh"

LMPOP(多弹出)

格式:LMPOP numkeys key [key ...] <LEFT | RIGHT> [COUNT count]

版本:7.0.0

描述:从提供键名称列表中的第一个非空列表键中弹出一个或多个元素。

  • numkeys:根据提供的key实际数量填写,有几个就是几个。
  • LEFT | RIGHT:按key的顺序,从左到右、从右到左。
  • count:弹出的元素数量。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
> LPUSH list a b c d e
(integer) 5

> LPUSH names x y z
(integer) 3

# 从list到names弹出3个元素
> LMPOP 2 list names left count 3
1) "list"
2) 1) "e"
2) "d"
3) "c"

# 从names到list弹出3个元素
> LMPOP 2 list names right count 3
1) "list"
2) 1) "a"
2) "b"

BLMPOP(阻塞·多弹出)

格式:BLMPOP timeout numkeys key [key ...] <LEFT | RIGHT> [COUNT count]

版本:7.0.0

描述:从提供键名称列表中的第一个非空列表键中弹出一个或多个元素。

  • timeout:阻塞最大时间
1
2
3
4
5
6
7
8
9
10
> LPUSH list1 a b c 
(integer) 3

# 从list1、list2两个列表中弹出10个元素,阻塞时间为5秒,按从左到右顺序
# 结果是list1被删除了,返回值是list1的元素
> BLMPOP 5 2 list1 list2 LEFT count 10
1) "list1"
2) 1) "c"
2) "b"
3) "a"

RPOPLPUSH(元素转换)

格式:RPOPLPUSH source destination

版本:1.2.0

描述:以原子方式返回并删除存储在source 列表的最后一个元素(尾部),并将该元素推送到存储destination列表的第一个元素(头部)在。从 Redis 版本 6.2.0 开始,此命令被视为已弃用,可以将其替换为带有 and 参数的 LMOVE

1
2
3
4
5
6
7
8
9
10
11
12
13
> RPUSH mylist "one"
(integer) 1
> RPUSH mylist "two"
(integer) 2
> RPUSH mylist "three"
(integer) 3
> RPOPLPUSH mylist myotherlist
"three"
> LRANGE mylist 0 -1
1) "one"
2) "two"
> LRANGE myotherlist 0 -1
1) "three"

BRPOPLPUSH(阻塞·元素转换)

格式:BRPOPLPUSH source destination timeout

版本:2.0.0

描述:BRPOPLPUSHRPOPLPUSH 的阻塞变体。 当包含元素时,此命令的行为与 RPOPLPUSH 完全相同。 当为列表空时,Redis 将阻止连接,直到另一个客户端 推到它或直到到达。 timeout为零可用于无限期阻塞。从 Redis 版本 6.2.0 开始,此命令被视为已弃用。可以将其替换为带有 and 参数的 BLMOVE

Set(集合)

Redis 集合是唯一字符串(成员)的无序集合。 您可以使用 Redis 集有效地执行以下操作:

  • 跟踪唯一项目(例如,跟踪访问给定博客文章的所有唯一 IP 地址)。
  • 表示关系(例如,具有给定角色的所有用户的集合)。
  • 执行常见的集合运算,例如交集、并集和差分。

基本命令

  • SADD 将新成员添加到集合中。
  • SREM 从集合中除去指定的成员。
  • SISMEMBER 测试字符串的集合成员身份。
  • SINTER 返回两个或多个集合(即交集)具有共同的成员集。
  • SCARD 返回集合的大小(也称为基数)。

命令大全

SADD(添加)

格式:SADD key member [member ...]

版本:1.0.0

描述:将指定的成员添加到集合中。

1
2
3
4
5
6
7
8
> SADD names zhangsan
(integer) 1

> SADD names lisi
(integer) 1

> SADD names wangchao mahan
(integer) 2

SMEMBERS(打印)

格式:SMEMBERS key

版本:1.0.0

描述:返回集合所有元素

1
2
3
4
5
6
7
8
> SADD names wang zhang lin you
(integer) 4

> SMEMBERS names
1) "wang"
2) "zhang"
3) "lin"
4) "you"

SREM(删除)

格式:SREM key member [member ...]

版本:1.0.0

描述:从集合删除指定元素

1
2
3
4
5
6
7
8
9
10
11
12
13
> SMEMBERS names
1) "wang"
2) "zhang"
3) "lin"
4) "you"

> SREM names "zhang"
(integer) 1

> SMEMBERS names
1) "wang"
2) "lin"
3) "you"

SCARD(获取长度)

格式:SCARD key

版本:1.0.0

描述:返回集合的元素数。

1
2
3
4
5
> SADD age 18 19 20
(integer) 3

> SCARD age
(integer) 3

SDIFF(比较)

格式:SDIFF key [key ...]

版本:1.0.0

描述:返回第一个集合与其他集合之间的差异,就是第一个集合中独有的元素。不存在的集合 key 将视为空集。

1
2
3
4
5
6
7
8
9
10
11
> SADD name1 "zhang" "li"
(integer) 2

> SADD name2 "wang" "li"
(integer) 2

> SADD name3 "li" "wei"
(integer) 2

> SDIFF name1 name2 name3
1) "zhang"

SDIFFSTORE(比较并存储)

格式:SDIFFSTORE destination key [key ...]

版本:1.0.0

描述:与SDIFF效果一致,但是不返回结果集,而是把结果集存储在destination 中,destination 已存在则覆盖。

1
2
3
4
5
> SDIFFSTORE new_name name1 name2 name3
(integer) 1

> SMEMBERS new_name
1) "zhang"

SINTER(交集)

格式:SINTER key [key ...]

版本:1.0.0

描述:返回所有给定集合的交集。

1
2
3
4
5
6
7
8
9
10
11
12
> SADD A 1 2 3 4
(integer) 4

> SADD B 1 3 5 7
(integer) 4

> SADD C 1 3 8 9
(integer) 4

> SINTER A B C
1) "1"
2) "3"

SINTERCARD(交集个数)

格式:SINTERCARD numkeys key [key ...] [LIMIT limit]

版本:7.0.0

描述:类似于SINTER但它不是返回结果集,而是仅返回交集中的元素个数。如果其中一个key是空集,则结果也是空集(因为集与空集的交集总是导致空集)。

  • LIMIT:可以指定交集结果最大元素数,达到限制后算法将退出求交集,防止异常和提高性能。
1
2
3
4
5
6
7
8
9
10
> SINTERCARD 3 A B C
(integer) 2

# 限制最大交集为1,返回1,实际有2个
> SINTERCARD 3 A B C limit 1
(integer) 1

# 限制最大交集为10,返回2,实际有2个
> SINTERCARD 3 A B C limit 10
(integer) 2

SINTERSTORE(交集且存储)

格式:SINTERSTORE destination key [key ...]

版本:1.0.0

描述:与SINTER效果一致,但是不返回结果集,而是把结果集存储在destination 中,destination 已存在则覆盖。

1
2
3
4
5
6
> SINTERSTORE D A B C
(integer) 2

> SMEMBERS D
1) "1"
2) "3"

SUNION(并集)

格式:SUNION key [key ...]

版本:1.0.0

描述:返回所有集合的并集。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
> SMEMBERS A
1) "2"
2) "3"

> SMEMBERS B
1) "1"
2) "3"
3) "5"
4) "7"

> SMEMBERS C
1) "1"
2) "3"
3) "8"
4) "9"

# 求并集
> SUNION A B C
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
6) "8"
7) "9"

SUNIONSTORE(并集且存储)

格式:SUNIONSTORE destination key [key ...]

版本:1.0.0

描述:返回所有集合的并集,存储到destination 集合。

1
2
3
4
5
6
7
8
9
10
11
> SUNIONSTORE D A B C
(integer) 7

> SMEMBERS D
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
6) "8"
7) "9"

SISMEMBER(包含)

格式:SISMEMBER key member

版本:1.0.0

描述:查询集合是否包含某元素,如果包含返回1,不包含返回0

1
2
3
4
5
> SADD names zhao li wang gu
(integer) 4

> SISMEMBER names gu
(integer) 1

SMISMEMBER(包含多个)

格式:SMISMEMBER key member [member ...]

版本:6.2.0

描述:与SISMEMBER效果相同,但支持多个元素,返回的结果顺序与请求顺序一致。

1
2
3
4
5
6
7
> SADD names zhao li wang gu
(integer) 4

> SMISMEMBER names gu li qian
1) "1"
2) "1"
3) "0"

SMOVE(移动)

格式:SMOVE source destination member

版本:1.0.0

描述:将source集合中的元素member,移动到destination集合中。成功返回1member不是source的成员则返回0sourcedestination不是集合类型,则返回错误。

1
2
3
4
5
6
7
8
9
10
11
> SMEMBERS names
1) "zhao"
2) "li"
3) "wang"
4) "gu"

> SMOVE names names2 li
(integer) 1

> SMEMBERS names2
1) "li"

SPOP(随机弹出)

格式:SPOP key [count]

版本:1.0.0

描述:从集合中弹出元素,默认弹出1个,count可以指定弹出数量。返回被弹出的元素。

1
2
3
4
5
6
7
8
9
10
> SMEMBERS A
1) "1"
2) "2"
3) "3"
4) "4"

# 随机弹出2个元素
> SPOP A 2
1) "4"
2) "1"

SRANDMEMBER(随机获取)

格式:SRANDMEMBER key [count]

版本:1.0.0

描述:类似于SPOP,但不删除元素,仅返回元素。指定count大于集合长度时,返回集合所有元素。指定count小于0时,返回count绝对值的元素个数,count为负数且绝对值大于集合长度时,可能返回多个重复值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> SMEMBERS B
1) "1"
2) "3"
3) "5"
4) "7"

# 随机获取两个,不会删除
> SRANDMEMBER B 2
1) "1"
2) "5"

> SMEMBERS B
1) "1"
2) "3"
3) "5"
4) "7"

SSCAN(遍历)

格式:SSCAN key cursor [MATCH pattern] [COUNT count]

版本:2.8.0

描述:遍历集合中键的元素,是SCAN的子命令。

  • cursor - 游标。
  • pattern - 匹配的模式。
  • count - 指定从数据集里返回多少元素,默认值为 10 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>SADD names zhang4 zhang5 zhang6 zhanga zhe zhi zhp zhq zh0 zh34 zh12 zher zh1233 zh9 zhee zh23
"16"

>SSCAN names 0 match zh*
1) "9"
2) 1) "zhang6"
2) "zhang5"
3) "zhang4"
4) "zh12"
5) "zh23"
6) "zhi"
7) "zhp"
8) "zhe"
9) "zhee"

>SSCAN names 9 match zh*
1) "0"
2) 1) "zh9"
2) "zhanga"
3) "zhq"
4) "zh1233"
5) "zher"
6) "zh0"
7) "zh*"
8) "zh34"

Hash(哈希)

基本命令

  • HSET 设置哈希值上一个或多个字段的值。
  • HGET 返回给定字段的值。
  • HMGET 返回一个或多个给定字段的值。
  • HINCRBY 将给定字段的值按提供的整数递增。

命令大全

HSET(设置哈希字段)

​ 格式:HSET key field value [field value ...]

​ 版本:2.0.0

​ 描述:设置哈希键值。从Redis版本4.0.0开始接受多个参数。

1
2
3
4
5
6
7
8
9
10
> HSET en BBB 1 CCC 2 DDD 3
(integer) 3

> HGETALL en
1) "BBB"
2) "1"
3) "CCC"
4) "2"
5) "DDD"
6) "3"

HMSET(设置多个字段·已弃用)

​ 格式:HMSET key field value [field value ...]

​ 版本:4.0.0 开始已弃用

​ 描述:设置哈希键多个字段值

1
2
3
4
5
6
> HMSET myhash field1 "Hello" field2 "World"
"OK"
> HGET myhash field1
"Hello"
> HGET myhash field2
"World"

HSETNX(设置哈希字段·NX)

​ 格式:HSETNX key field value

​ 版本:2.0.0

​ 描述:仅当哈希键的字段不存在时才设置值。

1
2
3
4
5
6
7
8
> HSETNX user name zhangsan
(integer) 1

> HSETNX user name lisi
(integer) 0

> HSETNX user age 18
(integer) 1

HGET(获取字段值)

​ 格式:HGET key field

​ 版本:2.0.0

​ 描述:获取哈希键的值

1
2
3
4
5
> HSET user name "zhangsan" age "18"
(integer) 2

> HGET user name
"zhangsan"

HMGET(获取多个字段值)

​ 格式:HMGET key field [field ...]

​ 版本:2.0.0

​ 描述:获取多个字段的值,返回值顺序与给定字段顺序一致。

1
2
3
4
5
6
7
> HMGET user name age
1) "zhangsan"
2) "13"

> HMGET user age name
1) "13"
2) "zhangsan"

HGETALL(获取值·所有)

​ 格式:HGETALL key

​ 版本:2.0.0

​ 描述:获取哈希键的所有字段和值

1
2
3
4
5
> HGETALL user
1) "name"
2) "zhangsan"
3) "age"
4) "18"

HDEL(删除字段)

​ 格式:HDEL key field [field ...]

​ 版本:2.0.0

​ 描述:删除指定字段,成功返回1,字段不存在返回0,从2.4.0开始支持多个字段。

1
2
3
4
5
6
7
8
> HSET myhash field1 "foo"
(integer) 1

> HDEL myhash field1
(integer) 1

> HDEL myhash field2
(integer) 0

HEXISTS(是否存在)

​ 格式:HEXISTS key field

​ 版本:2.0.0

​ 描述:存在返回1,不存在返回0

1
2
3
4
5
6
7
8
> HSET myhash field1 "foo"
(integer) 1

> HEXISTS myhash field1
(integer) 1

> HEXISTS myhash field2
(integer) 0

HEXPIRE(设置字段过期·秒)

​ 格式:HEXPIRE key seconds [NX | XX | GT | LT] FIELDS numfields field [field ...]

​ 版本:7.4.0

​ 描述:在给定哈希key的字段上设置过期时间,到期后该字段会被删除。可以使用 HPERSIST 命令清除 TTL, 该命令会将哈希字段转换回持久字段。

  • seconds :秒数
  • numfields:字段数量,如3,后面跟着3个字段

​ 该命令支持一组选项:

  • NX– 对于每个指定字段,仅当字段没有过期时才设置过期时间。
  • XX– 对于每个指定字段,仅当字段已过期时才设置过期时间。
  • GT– 对于每个指定字段,仅当新到期时间大于当前到期时间时才设置过期时间。
  • LT – 对于每个指定字段,仅当新到期时间小于当前到期时间时才设置过期时间。
1
2
3
4
5
6
7
8
9
10
11
12
13
> HEXPIRE no-key 20 NX FIELDS 2 field1 field2
(nil)

> HSET mykey field1 "hello" field2 "world"
(integer 2)

> HEXPIRE mykey 10 FIELDS 3 field1 field2 field3
1) (integer) 1
2) (integer) 1
3) (integer) -2

> HGETALL mykey
(empty array)

HPEXPIRE(设置字段过期·毫秒)

​ 格式:HPEXPIRE key milliseconds [NX | XX | GT | LT] FIELDS numfields field [field ...]

​ 版本:7.4.0

​ 描述:设置哈希键上字段的过期时间,以毫秒为单位。

1
2
3
4
5
6
7
8
9
> HSET mykey field1 "hello" field2 "world"
(integer 2)

> HPEXPIRE mykey 2000 FIELDS 2 field1 field2
1) (integer) 1
2) (integer) 1

> HGETALL mykey
(empty array)

HEXPIREAT(设置字段过期·Unix秒)

格式:HEXPIREAT key unix-time-seconds [NX | XX | GT | LT] FIELDS numfields field [field ...]

​ 版本:7.4.0

​ 描述:与HEXPIRE效果一致,不同的是用Unix 时间戳(秒)来设置。

1
2
3
4
5
6
7
8
9
10
> HSET mykey field1 "hello" field2 "world"
(integer 2)

> HEXPIREAT mykey 1715704971 FIELDS 2 field1 field2
1) (integer) 1
2) (integer) 1

> HTTL mykey FIELDS 2 field1 field2
1) (integer) 567
2) (integer) 567

HPEXPIREAT(设置字段过期·Unix毫秒)

​ 格式:HPEXPIREAT key unix-time-milliseconds [NX | XX | GT | LT] FIELDS numfields field [field ...]

​ 版本:7.4.0

​ 描述:与HEXPIREAT效果一致,不同的是用Unix 时间戳(毫秒)来设置。

1
2
3
4
5
6
7
8
9
10
> HSET mykey field1 "hello" field2 "world"
(integer 2)

> HPEXPIREAT mykey 1715704971000 FIELDS 2 field1 field2
1) (integer) 1
2) (integer) 1

> HPTTL mykey FIELDS 2 field1 field2
1) (integer) 303340
2) (integer) 303340

HTTL(获取有效期·秒)

​ 格式:HTTL key numfields field [field ...]

​ 版本:7.4.0

​ 描述:获取哈希键的某些字段的过期时间,以为单位返回。

1
2
3
4
5
6
7
8
9
10
11
> HSET mykey field1 "hello" field2 "world"
(integer) 2

> HEXPIRE mykey 300 2 field1 field3
1) (integer) 1
2) (integer) -2

> HTTL mykey 3 field1 field2 field3
1) (integer) 283
2) (integer) -1
3) (integer) -2

HPTTL(获取有效期·毫秒)

​ 格式:HPTTL key FIELDS numfields field [field ...]

​ 版本:7.4.0

​ 描述:与 HTTL 一样,以毫秒单位返回字段过期时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
> HPTTL no-key 10 FIELDS 3 field1 field2 field3
(nil)

> HSET mykey field1 "hello" field2 "world"
(integer) 2

> HEXPIRE mykey 300 FIELDS 2 field1 field3
1) (integer) 1
2) (integer) -2

> HPTTL mykey FIELDS 3 field1 field2 field3
1) (integer) 292202
2) (integer) -1
3) (integer) -2

HEXPIRETIME(获取字段过期时间·Unix秒)

​ 格式:HEXPIRETIME key FIELDS numfields field [field ...]

​ 版本:7.4.0

​ 描述:返回自 Unix 纪元以来的绝对 Unix 时间戳(以为单位),给定键的字段将在该时间过期。

1
2
3
4
5
6
7
8
9
10
> HSET mykey field1 "hello" field2 "world"
(integer) 2

> HEXPIRE mykey 300 FIELDS 2 field1 field2
1) (integer) 1
2) (integer) 1

> HEXPIRETIME mykey FIELDS 2 field1 field2
1) (integer) 1715705914
2) (integer) 1715705914

HPEXPIRETIME(获取字段过期时间·Unix毫秒)

​ 格式:HPEXPIRETIME key FIELDS numfields field [field ...]

​ 版本:7.4.0

​ 描述:返回自 Unix 纪元以来的绝对 Unix 时间戳(以毫秒为单位),给定键的字段将在该时间过期。

1
2
3
4
5
6
7
8
9
10
> HSET mykey field1 "hello" field2 "world"
(integer) 2

> HEXPIRE mykey 300 FIELDS 2 field1 field2
1) (integer) 1
2) (integer) 1

> HPEXPIRETIME mykey FIELDS 2 field1 field2
1) (integer) 1715705913659
2) (integer) 1715705913659

HINCRBY(递增·整数)

​ 格式:HINCRBY key field increment

​ 版本:2.0.0

​ 描述:递增/递减哈希键中某个字段,字段必须是64 位有符号整数。返回递增/递减后的值。

  • increment:递增值,整数。
1
2
3
4
5
6
7
8
> HGET user age
"18"

> HINCRBY user age 1
(integer) 19

> HINCRBY user age -5
(integer) 14

HINCRBYFLOAT(递增·浮点数)

​ 格式:HINCRBYFLOAT key field increment

​ 版本:2.6.0

​ 描述:浮点数递增/递减,给定值必须能解析为双进度浮点数。

1
2
3
4
5
> HINCRBYFLOAT user age 0.5
"14.5"

> HINCRBYFLOAT user age -1.5
"13"

HKEYS(所有字段)

​ 格式:HKEYS key

​ 版本:2.0.0

​ 描述:返回哈希键的所有字段。

1
2
3
> HKEYS user
1) "name"
2) "age"

HLEN(字段数量)

​ 格式:HLEN key

​ 版本:2.0.0

​ 描述:返回哈希键中字段数量。

1
2
> HLEN user
(integer) 2

HPERSIST(永久有效期)

​ 格式:HPERSIST key FIELDS numfields field [field ...]

​ 版本:7.4.0

​ 描述:删除哈希键上字段的过期时间,字段将被重置为永久有效。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
> HSET mykey field1 "hello" field2 "world"
(integer 2)

> HEXPIRE mykey 300 FIELDS 2 field1 field2
1) (integer) 1
2) (integer) 1

> HTTL mykey FIELDS 2 field1 field2
1) (integer) 283
2) (integer) 283

> HPERSIST mykey FIELDS 1 field2
1) (integer) 1

> HTTL mykey FIELDS 2 field1 field2
1) (integer) 268
2) (integer) -1

HRANDFIELD(随机获取)

​ 格式:HRANDFIELD key [count [WITHVALUES]]

​ 版本:6.2.0

​ 描述:随机返回哈希字段,count为正数则返回的字段不会重复,count为负数则会重复。指定关键字WITHVALUES后,返回字段的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
>  HSET coin heads obverse tails reverse edge null
(integer) 3

> HGETALL coin
1) "heads"
2) "obverse"
3) "tails"
4) "reverse"
5) "edge"
6) "null"

# 正数,不重复,超过最大数则全部返回
> HRANDFIELD coin 5
1) "heads"
2) "tails"
3) "edge"

# 负数,会重复,知道返回负数的绝对值数量
> HRANDFIELD coin -5
1) "heads"
2) "tails"
3) "tails"
4) "tails"
5) "edge"

# 指定关键字WITHVALUES,返回字段的值
> HRANDFIELD coin 5 WITHVALUES
1) "heads"
2) "obverse"
3) "tails"
4) "reverse"
5) "edge"
6) "null"

HSCAN(扫描键)

​ 格式:HSCAN key cursor [MATCH pattern] [COUNT count] [NOVALUES]

​ 版本:2.8.0

​ 描述:有关文档,请参阅 SCAN

1

HVALS(获取所有值)

​ 格式:HVALS key

​ 版本:2.0.0

​ 描述:返回哈希键的所有值,不带字段。

1
2
3
4
5
6
7
8
9
> HGETALL user
1) "name"
2) "zhangsan"
3) "age"
4) "18"

> HVALS user
1) "zhangsan"
2) "18"

HSTRLEN(值的长度)

​ 格式:HSTRLEN key field

​ 版本:3.2.0

​ 描述:获取哈希键某个字段值的长度,字段值类型必须是字符串类型。

1
2
3
4
5
> HSTRLEN user name
(integer) 8

> HGET user name
"zhangsan"

ZSet(有序集合)

命令大全

BZMPOP

​ 格式:``

​ 版本:``

​ 描述:

1

BZPOPMAX

​ 格式:``

​ 版本:``

​ 描述:

1

BZPOPMIN

​ 格式:``

​ 版本:``

​ 描述:

1

ZADD

​ 格式:``

​ 版本:``

​ 描述:

1

ZCARD

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZCOUNT

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZDIFF

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZDIFFSTORE

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZINCRBY

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZINTER

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZINTERCARD

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZINTERSTORE

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZLEXCOUNT

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZMPOP

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZMSCORE

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZPOPMAX

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZPOPMIN

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZRANDMEMBER

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZRANGE

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZRANGEBYLEX

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZRANGEBYSCORE

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZRANGESTORE

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZRANK

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZREM

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZREMRANGEBYLEX

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZREMRANGEBYRANK

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZREMRANGEBYSCORE

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZREVRANGE

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZREVRANGEBYLEX

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZREVRANGEBYSCORE

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZREVRANK

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZSCAN

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZSCORE

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZUNION

​ 格式:``

​ 版本:``

​ 描述:

1
 

ZUNIONSTORE

​ 格式:``

​ 版本:``

​ 描述:

1
 

Redis Json

Pub/Sub