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

embedded/2024/9/22 13:46:41/

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

目录

      • **《Redis使用手册之有序集合》**
      • **ZADD:添加或更新成员**
      • **ZREM:移除指定的成员**
      • **ZSCORE:获取成员的分值**
      • **ZINCRBY:对成员的分值执行自增或自减操作**
      • **ZCARD:获取有序集合的大小**
      • **ZRANK、ZREVRANK:获取成员在有序集合中的排名**
      • **ZRANGE、ZREVRANGE:获取指定索引范围内的成员**
      • **ZRANGEBYSCORE、ZREVRANGEBYSCORE:获取指定分值范围内的成员**
      • **ZCOUNT:统计指定分值范围内的成员数量**
      • **ZREMRANGEBYRANK:移除指定排名范围内的成员**
      • **ZREMRANGEBYSCORE:移除指定分值范围内的成员**
      • **ZUNIONSTORE、ZINTERSTORE:有序集合的并集运算和交集运算**
      • **ZRANGEBYLEX、ZREVRANGEBYLEX:返回指定字典序范围内的成员**
      • **ZLEXCOUNT:统计位于字典序指定范围内的成员数量**
      • **ZREMRANGEBYLEX:移除位于字典序指定范围内的成员**
      • **ZPOPMAX、ZPOPMIN:弹出分值最高和最低的成员**
      • **BZPOPMAX、BZPOPMIN:阻塞式最大/最小元素弹出操作**

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:阻塞式最大/最小元素弹出操作


http://www.ppmy.cn/embedded/30926.html

相关文章

数据结构五:线性表之带头结点的双向链表的设计

我们在单链表中,有了next指针,这就使得我们要查找下一结点的时间复杂度为O(1)。可是如果我们要查找的是上一结点的话,那最坏的时间复杂度就是0[n)了,因为我们每次都要从头开始遍历查找。为了克服单向性这一缺点, 我们的老科学家们…

头歌:Spark的安装与使用

第1关:Scala语言开发环境的部署 相关知识 Scala是一种函数式面向对象语言,它融汇了许多前所未有的特性,而同时又运行于JVM之上。随着开发者对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为你手上一件…

k8s Dashboard 运维维护记录

k8s Dashboard 运维维护记录 k8s Dashboard 运维维护记录 Q1:需要使用firefox浏览器访问 提示了证书错误NET::ERR_CERT_INVALID,原因是由于物理机的浏览器证书不可用 需要注意的是,若提示“连接不安全”的警告时,点击“高级”…

数智新重庆 | 推进信号升格 打造算力山城

2024年,是实现“十四五”规划目标任务的关键一年,高质量的5G网络、强大的AI能力作为新质生产力的重要组成部分,将有效赋能包括制造业在内的千行万业数字化化、智能化、绿色化转型升级,推动融合应用新业态、新模式蓬勃兴起&#xf…

LLM 构建Data Multi-Agents 赋能数据分析平台的实践之③:数据分析之二(大小模型协同)

一、概述 随着新一代信息技术在产业数字化中的应用,产生了大量多源多模态信息以及响应的信息处理模式,数据孤岛、模型林立的问题也随之产生,使得业务系统臃肿、信息处理和决策效率低下,面对复杂任务及应用场景问题求解效率低。针…

【RabbitMQ】可靠性策略(幂等,消息持久化)

MQ可靠性策略 发送者的可靠性问题生产者的重连生产者确认 MQ的可靠性数据持久化Lazy Queue 消费者的可靠性问题消费者确认机制消息失败处理 业务幂等性简答问题 发送者的可靠性问题 生产者的重连 可能存在由于网络波动,出现的客户端连接MQ失败,我们可以…

cmd查看局域网内所有设备ip

说明:最近碰到一个新问题,就是有一个安卓设备,安装了一个app导致死机了,app设置了开机重启,所以,无论重启还是关机,都是进来就白屏, 这可把人愁坏了,直接死循环了 无论…

头歌:RDD的创建 -Scala

第1关:集合并行化创建RDD 任务描述 本关任务:计算并输出各个学生的总成绩。 相关知识 为了完成本关任务,你需要掌握:1.集合并行化创建RDD,2.reduceByKey算子、foreach算子 集合创建RDD Spark会将集合中的数据拷贝到集…