《Redis使用手册之有序集合》

发布于:2024-05-01 ⋅ 阅读:(35) ⋅ 点赞:(0)

《Redis使用手册之有序集合》

ZADD:添加或更新成员

  • 127.0.0.1:6379> zadd salary 3500 “patty” 4000 “jack” 5000 “matty” 6000 “tom”
    (integer) 4
    127.0.0.1:6379> zadd salary 2000 “tom”
    (integer) 0

    ZADD:添加或更新成员 通过使用ZADD命令,用户可以向有序集合添加一个或多个新成员

    ZADD sorted_set score member [score member …]

    指定要执行的操作 ZADD sorted_set [XX][NX] score member [score member …]

    • 在给定XX选项的情况下,ZADD命令只会对给定成员当中已经存在有序集合的成员更新,而不会向有序集合添加任何新成员。

    • 在给定NX选项的情况下,ZADD命令只会向有序集合添加新成员,而不会对已有的成员进行任何更新。

    ZADD:添加或更新成员通过使用ZADD命令,用户可以向有序集合添加一个或多个新成员:

ZREM:移除指定的成员

  • 127.0.0.1:6379> zrem salary tom
    (integer) 1
    127.0.0.1:6379> zrem salary goo
    (integer) 0

    ZREM:移除指定的成员 通过使用ZREM命令,用户可以从有序集合中移除指定一个或多个成员以及与这些成员相关联的分值

    ZREM sorted_set member [member …]

    如果用户给定的某个成员并不存在于有序集合中,那么ZREM将自动忽略该成员。

    ZREM:移除指定的成员

ZSCORE:获取成员的分值

  • 127.0.0.1:6379> zscore salary matty
    “5000”

    ZSCORE:获取成员的分值 ZCORE sorted_set member

    ZSCORE:获取成员的分值

ZINCRBY:对成员的分值执行自增或自减操作

  • 127.0.0.1:6379> zincrby salary 1000 matty
    “6000”
    127.0.0.1:6379> zincrby salary -1000 matty
    “5000”
    127.0.0.1:6379> zincrby salary 1000 ha
    “1000”
    127.0.0.1:6379> zincrby salary1 1000 a
    “1000”

    ZINCRBY:对成员的分值执行自增或自减操作

    ZINCRBY sorted_set increment member

    ZINCRBY命令在执行完自增操作之后,将返回给定成员当前的分值。

    执行自减操作,可以将一个负数增量传递给ZINCRBY命令,从而达到对分值执行自减操作的目的。

    处理不存在的键或者不存在的成员,ZINCRBY命令将直接把给定的成员添加到有序集合中,并把给定的增量设置为该成员的分值,效果相当于执行ZADD命令。

    如果对不存在的有序集合执行ZINCRBY命令,命令将会创建有序集合,并把分值添加到有序集合中。

    ZINCRBY:对成员的分值执行自增或自减操作

ZCARD:获取有序集合的大小

  • 127.0.0.1:6379> zcard salary
    (integer) 4
    127.0.0.1:6379> zcard salary1
    (integer) 1

    ZCARD:获取有序集合的大小 ZCARD sorted_set 如果用户给定的有序集合并不存在,那么ZCARD命令将返回0作为结果。

    ZCARD:获取有序集合的大小

ZRANK、ZREVRANK:获取成员在有序集合中的排名

  • 127.0.0.1:6379> zrank salary matty
    (integer) 3
    127.0.0.1:6379> zrank salary patty
    (integer) 1
    127.0.0.1:6379> zrevrank salary matty
    (integer) 0
    127.0.0.1:6379> zrevrank salary patty
    (integer) 2

    ZRANK、ZREVRANK:获取成员在有序集合中的排名

    升序排名 ZRANK sorted_set member

    降序排名 ZREVRANK sorted_set member

    ZRANK、ZREVRANK:获取成员在有序集合中的排名

ZRANGE、ZREVRANGE:获取指定索引范围内的成员

  • 127.0.0.1:6379> zrange salary 0 -1

    “ha”

    “patty”

    “jack”

    “matty”
    127.0.0.1:6379> zrevrange salary 0 -1

    “matty”

    “jack”

    “patty”

    “ha”
    127.0.0.1:6379> zrange salary 0 -1 withscores

    “ha”

    “1000”

    “patty”

    “3500”

    “jack”

    “4000”

    “matty”

    “5000”

    ZRANGE、ZREVRANGE:获取指定索引范围内的成员

    通过ZRANGE命令和ZREVRANGE命令,用户可以升序排列或者降序排列的方式,从有序集合中获取指定索引范围内的成员: ZRANGE sorted_set start end

    ZREVRANGE sorted_set start end

    使用负数索引,与LRANGE命令类似,ZRANGE命令和ZREVRANGE命令除了可以接收正数索引之外,还可以接收负数索引。

    获取成员及其分值 给定选项 [WITHSCORES]

    ZRANGE sorted_set start end [WITHSCORES]

    ZREVRANGE sorted_set start end [WITHSCORES]

    ZRANGE、ZREVRANGE:获取指定索引范围内的成员

ZRANGEBYSCORE、ZREVRANGEBYSCORE:获取指定分值范围内的成员

  • 127.0.0.1:6379> zrangebyscore salary 2000 5000

    “patty”

    “jack”

    “matty”
    127.0.0.1:6379> zrevrangebyscore salary 5000 2000

    “matty”

    “jack”

    “patty”

    127.0.0.1:6379> zrangebyscore salary 2000 5000 withscores

    “patty”

    “3500”

    “jack”

    “4000”

    “matty”

    “5000”
    127.0.0.1:6379> zrevrangebyscore salary 5000 2000 withscores

    “matty”

    “5000”

    “jack”

    “4000”

    “patty”

    “3500”

    127.0.0.1:6379> zrangebyscore salary 2000 5000 limit 0 1

    “patty”
    127.0.0.1:6379> zrevrangebyscore salary 5000 2000 limit 1 2

    “jack”

    “patty”
    127.0.0.1:6379> zrangebyscore salary (2000 (5000 withscores

    “patty”

    “3500”

    “jack”

    “4000”
    127.0.0.1:6379> zrangebyscore salary 2000 (5000 withscores

    “patty”

    “3500”

    “jack”

    “4000”
    127.0.0.1:6379> zrangebyscore salary (2000 5000 withscores

    “patty”

    “3500”

    “jack”

    “4000”

    “matty”

    “5000”

    127.0.0.1:6379> zrangebyscore salary -inf 5000 withscores

    “ha”

    “1000”

    “patty”

    “3500”

    “jack”

    “4000”

    “matty”

    “5000”
    127.0.0.1:6379> zrangebyscore salary -inf +inf withscores

    “ha”

    “1000”

    “patty”

    “3500”

    “jack”

    “4000”

    “matty”

    “5000”

    ZRANGEBYSCORE、ZREVRANGEBYSCORE:获取指定分值范围内的成员

    ZRANGEBYSCORE sorted_set min max

    ZREVRANGEBYSCORE sorted_set max min

    命令的min参数和max参数分别用于指定用户想要获取的成员的最小分值和最大分值。

    获取成员及其分值

    ZANGEBYSCORE sorted_set min max [WITHSCORES]

    ZREVRANGEBYSCORE sorted_set max min [WITHSCORES]

    限制命令返回成员数量,LIMIT选项来限制命令返回的成员数量:

    ZRANGEBYSCORE sorted_set min max [LIMIT offset count]

    ZREVRANGEBYSCORE sorted_set max min [LIMIT offset count]

    offset如果为0则不需要跳过成员,如果为n则需要跳过n个成员。

    • 使用功能开区间分值范围 在默认情况下ZRANGEBYSCORE命令和ZREVRANGEBYSCORE命令接受的分值范围,用户给定的最大值最小值的成员也会被包含在结果当中。
    • 如果用户想要定义开区间需要给定分值范围时,在分值参数前加上一个单括号 “(”,这样,给定分值的成员就不会包含在返回结果中。
    • 使用无限值作为范围 ZRANGEBYSCORE sorted_set -inf +inf WITHSCORES +inf 表示无穷大 -inf 表示无穷小

    ZRANGEBYSCORE、ZREVRANGEBYSCORE:获取指定分值范围内的成员

ZCOUNT:统计指定分值范围内的成员数量

  • 127.0.0.1:6379> zcount salary 2000 5000
    (integer) 3
    127.0.0.1:6379> zcount salary -inf 5000
    (integer) 4
    127.0.0.1:6379> zcount salary (1000 5000
    (integer) 3

    ZCOUNT:统计指定分值范围内的成员数量

    ZOUNT sorted_set min max

    分值范围格式和ZRANGEBYSCORE命令接受的分值范围格式完全相同。

    ZCOUNT:统计指定分值范围内的成员数量

ZREMRANGEBYRANK:移除指定排名范围内的成员

  • 127.0.0.1:6379> zremrangebyrank salary 0 3
    (integer) 4

    ZREMRANGEBYRANK:移除指定排名范围内的成员

    ZREMRANGEBYRANK sorted_set start end 与Redis的其他很多范围型命令一样,ZREMRANGEBYRANK命令接受的也是一个闭区间范围,也就是说,排名为start和end的成员也将被移除。 使用负数排名 ZREMRANGEBYRANK salary -3 -1

    ZREMRANGEBYRANK:移除指定排名范围内的成员ZREMRANGEBYRANK命令可以从升序排列的有序集合中移除位于指定排名范围内的成员,然后返回被移除成员的数量:

ZREMRANGEBYSCORE:移除指定分值范围内的成员

  • 127.0.0.1:6379> zrangebyscore salary -inf +inf withscores

​ “aa”

​ “1000”

​ “bb”

​ “2000”

​ “cc”

​ “3000”

​ “dd”

​ “4000”

​ “ff”

​ “5000”

​ “gg”

​ “6000”

  • 127.0.0.1:6379> zremrangebyscore salary 2000 3000
    (integer) 2

    127.0.0.1:6379> zrangebyscore salary -inf +inf withscores

    “aa”

    “1000”

    “dd”

    “4000”

    “ff”

    “5000”

    “gg”

    “6000”

    ZREMRANGEBYSCORE:移除指定分值范围内的成员

    ZREMRANGEBYSCORE sorted_set min max ZREMRANGEBYSCORE

    命令接受的分值范围与ZRANGEBYSCORE命令和ZCOUNT命令接受的分值范围一样,都默认为闭区间分值范围,但用户可以使用(符号定义闭区间,或者使用+inf和-inf表示正无限分值或负无限分值。

    ZREMRANGEBYSCORE:移除指定分值范围内的成员

ZUNIONSTORE、ZINTERSTORE:有序集合的并集运算和交集运算

  • 127.0.0.1:6379> zadd sorted_set1 1 a 1 b 1 c
    (integer) 3
    127.0.0.1:6379> zadd sorted_set2 2 c 2 d 2 e
    (integer) 3

    127.0.0.1:6379> zunionstore union-result-1 2 sorted_set1 sorted_set2
    (integer) 5127.0.0.1:6379> zrangebyscore union-result-1 -inf +inf withscores

    “a”

    “1”

    “b”

    “1”

    “d”

    “2”

    “e”

    “2”

    “c”

    “3”

    127.0.0.1:6379> zinterstore inter-result-1 2 sorted_set1 sorted_set2
    (integer) 1
    127.0.0.1:6379> zrangebyscore inter-result-1 -inf +inf

    “c”

    127.0.0.1:6379> zadd ss1 1 a
    (integer) 1
    127.0.0.1:6379> zadd ss2 2 a
    (integer) 1
    127.0.0.1:6379> zadd ss3 5 a
    (integer) 1

    127.0.0.1:6379> zinterstore agg-sum 3 ss1 ss2 ss3 aggregate sum
    (integer) 1
    127.0.0.1:6379> zrange agg-sum 0 -1 withscores

    “a”

    “8”
    127.0.0.1:6379> zinterstore agg-min 3 ss1 ss2 ss3 aggregate min
    (integer) 1
    127.0.0.1:6379> zrange agg-min 0 -1 withscores

    “a”

    “1”
    127.0.0.1:6379> zinterstore agg-max 3 ss1 ss2 ss3 aggregate max
    (integer) 1
    127.0.0.1:6379> zrange agg-max 0 -1 withscores

    “a”

    “5”

    127.0.0.1:6379> zadd wss1 2 a
    (integer) 1
    127.0.0.1:6379> zadd wss2 4 b
    (integer) 1
    127.0.0.1:6379> zadd wss3 3 c
    (integer) 1
    127.0.0.1:6379> zunionstore weight-result 3 wss1 wss2 wss3 weights 3 5 1
    (integer) 3
    127.0.0.1:6379> zrange weight-result 0 -1 withscores

    “c”

    “3”

    “a”

    “6”

    “b”

    “20”

    ZUNIONSTORE、ZINTERSTORE:有序集合的并集运算和交集运算

    ZUNIONSTORE destination numbers sorted_set [sorted_set …]

    ZINTERSTORE destination numbers sorted_set [sorted_set]

    指定聚合函数 Redis为ZUNIONSTORE命令和ZINTERSTORE命令提供了可选的AGGREGATE选项,通过这个选项,用户可以决定使用哪个聚合函数来计算结果有序集合成员的分值:

    ZUNIONSTORE destination numbers sorted_set [sorted_set …] [AGGREGATE SUM|MIN|MAX]

    ZINTERSTORE destination numbers sorted_set [sorted_set …] [AGGREGATE SUM|MIN|MAX]

    在没有显示地使用AGGREGATE选项指定聚合函数的情况下,ZUNIONSTORE和ZINTERSTORE默认使用SUM作为聚合函数。

    设置权重 WEIGHTS 参数

    ZUNIONSTORE destination numbers sorted_set [sorted_set …] [WEIGHTS weight [weight …]]

    ZINTERSTORE destination numbers sorted_set [sorted_set …] [WEIGHTS weight [weight …]]

    在使用WEIGHTS选项时,用户需要为每个给定的有序集合分别设置一个权重,命令会将这个权重与成员的分值相乘,得出成员的新分值,然后进行聚合计算;

    如果不想改变某个有序集合的分值,只需要将那个有序集合的权重设置为1即可。

    使用集合作为输入 ZUNIONSTORE和ZINTERSTORE除了可以使用有序集合作为输入之外,还可以使用集合作为输入:

    在默认情况下,这两个命令将把给定集合看作所有成员的分值都为1的有序集合来进行计算。

    ZUNIONSTORE、ZINTERSTORE:有序集合的并集运算和交集运算

ZRANGEBYLEX、ZREVRANGEBYLEX:返回指定字典序范围内的成员

127.0.0.1:6379> sadd alpha a b c
(integer) 3
127.0.0.1:6379> zadd another-alpha 2 c 5 d 7 e
(integer) 3
127.0.0.1:6379> zunionstore mixed 2 alpha another-alpha
(integer) 5

127.0.0.1:6379> zrange mixed 0 -1 withscores

“a”

“1”

“b”

“1”

“c”

“3”

“d”

“5”

“e”

“7”

127.0.0.1:6379> zadd words 0 address 0 after 0 apple 0 bamboo 0 bear 0 book 0 candy 0 cat 0 client
(integer) 9
127.0.0.1:6379> zrangebylex words [a (b

“address”

“after”

“apple”
127.0.0.1:6379> zrangebylex words - (c

“address”

“after”

“apple”

“bamboo”

“bear”

“book”

127.0.0.1:6379> zrevrangebylex words (c [a

“book”

“bear”

“bamboo”

“apple”

“after”

“address”

ZRANGEBYLEX、ZREVRANGEBYLEX:返回指定字典范围内的成员

ZRANGEBYLEX sorted_set min max

命令的min参数和max参数用于指定用户想要获取的字典序范围。

带有[符号的值表示在结果中包含给定值具有同等字典序大小的成员。

带有(符号的值表示在结果中不包含与给定值具有同等字典序大小的成员。 - 加号+表示无穷大 - 减号 - 表示无穷小 ZREVRANGEBYLEX命令式逆序版的ZRANGEBYLEX命令,它会以逆字典序的方式返回指定范围内的成员

ZREVRANGEBYLEX sorted_set max min

限制命令返回的成员数量

127.0.0.1:6379> zrangebylex words [b + limit 0 1

“bamboo”

ZRANGEBYLEX sorted_set min max [LIMIT offset count]

ZREVRANGEBYLEX sorted_set max min [LIMIT offset count]

ZRANGEBYLEX、ZREVRANGEBYLEX:返回指定字典序范围内的成员

ZLEXCOUNT:统计位于字典序指定范围内的成员数量

  • 127.0.0.1:6379> zlexcount words [a (b
    (integer) 3
    127.0.0.1:6379> zlexcount words [b +
    (integer) 6

    ZLEXCOUNT:统计位于字典序指定范围内的成员数量。

    ZLEXCOUNT sorted_set min max

    ZLEXCOUNT命令的min参数和max参数的格式与ZRANGEBYLEX命令接受的min参数和max参数的格式完全相同。

    ZLEXCOUNT:统计位于字典序指定范围内的成员数量

ZREMRANGEBYLEX:移除位于字典序指定范围内的成员

  • 127.0.0.1:6379> zremrangebylex words [b (c
    (integer) 3

    ZREMRANGEBYLEX:移除位于字典序指定范围内的成员

    ZREMRANGEBYLEX sorted_set min max

    这个命令的min参数和max参数的格式与ZRANGEBYLEX命令以及ZLEXCOUNT命令接受的min参数和max参数的格式完全相同。

    ZREMRANGEBYLEX:移除位于字典序指定范围内的成员

ZPOPMAX、ZPOPMIN:弹出分值最高和最低的成员

  • 127.0.0.1:6379> zadd salary 1000 zs 2000 lisi 3000 wangwu 5000 maliu
    (integer) 4
    127.0.0.1:6379> zpopmax salary

    “gg”

    “6000”
    127.0.0.1:6379> zpopmin salary

    “aa”

    “1000”

    127.0.0.1:6379> zrange salary 0 -1 withscores

    “zs”

    “1000”

    “lisi”

    “2000”

    “wangwu”

    “3000”

    “dd”

    “4000”

    “ff”

    “5000”

    “maliu”

    “5000”

    127.0.0.1:6379> zpopmax salary 2

    “maliu”

    “5000”

    “ff”

    “5000”

    ZPOPMAX、ZPOPMIN:弹出分值最高和最低的成员

    ZPOPMAX sorted_set [count] ZPOPMIN sorted_set [count]

    其中被移除元素的数量可以通过可选的count参数来指定。

    如果用户没有显示地给定count参数,那么命令默认只会移除一个元素。

    ZPOPMAX、ZPOPMIN:弹出分值最高和最低的成员ZPOPMAX和ZPOPMIN是Redis 5.0版本新添加的两个命令,分别用于移除并返回有序集合中分值最大和最小的N个元素:

BZPOPMAX、BZPOPMIN:阻塞式最大/最小元素弹出操作

  • 127.0.0.1:6379> bzpopmax ss1 ss2 ss3 10

    “ss1”

    “a”

    “1”
    127.0.0.1:6379> bzpopmax ss1 ss2 ss3 10

    “ss2”

    “a”

    “2”
    127.0.0.1:6379> bzpopmax ss1 ss2 ss3 10

    “ss3”

    “a”

    “5”
    127.0.0.1:6379> bzpopmax ss1 ss2 ss3 10
    (nil)
    (10.05s)

    BZPOPMAX、BZPOPMIN:阻塞式最大/最小元素弹出操作。

    BZPOPMAX命令和BZPOPMIN命令分别是ZPOPMAX命令以及ZPOPMIN命令的阻塞版本,这两个阻塞命令都接受任意多个有序集合和一个秒级精度的超时时限作为参数:

    BZPOPMAX sorted_set [sorted_set …] timeout

    BZPOPMIN sorted_set [sorted_set …] timeout

    BZPOPMAX、BZPOPMIN:阻塞式最大/最小元素弹出操作


网站公告

今日签到

点亮在社区的每一天
去签到