Redis命令之有序集合

文章目录

    • 1. 简介
    • 2. zadd
    • 3. zrem
    • 4. zscore
    • 5. zincrby
    • 6. zcard
    • 7. zrank/zrevrank
    • 8. zrange/zrevrange
    • 9. zrangebyscore/zrevrangebyscore
    • 10. zcount
    • 11. zremrangebyrank
    • 12. zremrangebyscore
    • 13. zunionstore/zinterstore
    • 14. zrangebylex/ zrevrangebylex
    • 15. zlexcount
    • 16. zremrangebylex
    • 17. zpopmax/zpopmin
    • 18. bzpopmax/bzpopmin

1. 简介

  1. 有序集合中的每个元素都由一个成员和一个与成员相关联的分值组成,其中成员以字符串方式存储,而分值则以64位双精度浮点数格式存储
    example:
    在这里插入图片描述
  2. 有序集合中的每个成员都是独一无二, 按照它们各自的分值大小进行排序,分值相同时根据字典序进行排列
  3. 成员不能相同,分值可以相同

2. zadd

  1. 添加
    在这里插入图片描述
  2. 更新
    Redis命令之有序集合_第1张图片
  3. XX选项
    XX选项的ZADD命令只会对有序集合已有的成员进行更新,而不会向有序集合添加任何新成员
    Redis命令之有序集合_第2张图片
  4. NX选项
    带有NX选项的ZADD命令只会向有序集合添加新成员,而不会对已有的成员进行任何更新
    Redis命令之有序集合_第3张图片
  5. ch选项
    默认情况不带ch选项时,zadd返回的是新添加的成员的数量,修改的成员数量不会返回,带ch选项后也会返回被修改的成员的数量
    Redis命令之有序集合_第4张图片

3. zrem

zrem sorted_set member1 member2....:从有序集合中移除指定的一个或多个成员以及与这些成员相关联的分值
在这里插入图片描述
如果用户给定的某个成员并不存在于有序集合中,那么ZREM将自动忽略该成员


4. zscore

zscore sorted_set member:获取与给定成员相关联的分值
在这里插入图片描述


5. zincrby

zincrby sorted_set increment member:对有序集合中指定成员的分值执行自增操作,为其加上指定的增量

  1. 增加
    Redis命令之有序集合_第5张图片

  2. 减少
    在这里插入图片描述

  3. 成员不存在/集合不存在
    Redis命令之有序集合_第6张图片
    给定成员并不存在于有序集合中,或者给定的有序集合并不存在,那么ZINCRBY命令将直接把给定的成员添加到有序集合中,并把给定的增量设置为该成员的分值,效果相当于执行ZADD命令


6. zcard

zcard sorted_set: 获取有序集合包含的成员数量
在这里插入图片描述


7. zrank/zrevrank

zrank sorted_set member:获得成员的升序排列排名
zrevrank sorted_set member:获得成员的降序排列排名
Redis命令之有序集合_第7张图片


8. zrange/zrevrange

zrange sorted_set start end: 获取正序排列排名[start,end]范围内的元素
zrevrange sorted_set start end: 获取逆序排列排名[start,end]范围内的元素

Redis命令之有序集合_第8张图片Redis命令之有序集合_第9张图片


9. zrangebyscore/zrevrangebyscore

zrangebyscore sorted_set min max: 获取分数在[min,max]内的成员
zrevrangebyscore sorted_set max min: 获取分数在[max,min]内的成员
min参数和max参数分别用于指定用户想要获取的成员的最小分值和最大分值
Redis命令之有序集合_第10张图片
Redis命令之有序集合_第11张图片

  1. 获取成员数量
    zrangebyscore sorted_set min max limit offset count
    offset参数用于指定命令在返回结果之前需要跳过的成员数量,而count参数则用于指示命令最多可以返回多少个成员
    Redis命令之有序集合_第12张图片

  2. 使用开区间作为范围
    Redis命令之有序集合_第13张图片

  3. 使用无限值作为范围
    Redis命令之有序集合_第14张图片


10. zcount

zcount sorted_set min max:统计出有序集合中分值介于指定范围之内的成员数量
Redis命令之有序集合_第15张图片
在这里插入图片描述


11. zremrangebyrank

zremrangebyrank sorted_set start end:从升序排列的有序集合中移除位于指定排名范围内的成员,然后返回被移除成员的数量

Redis命令之有序集合_第16张图片


12. zremrangebyscore

zremrangebyscore sorted_set min max:从有序集合中移除位于指定分值范围内的成员,并在移除操作执行完毕返回被移除成员的数量
Redis命令之有序集合_第17张图片
区间可以使用开区间也可以使用无穷区间,和zrangebyscore/zrevrangebyscore中的使用方法一样


13. zunionstore/zinterstore

zunionstore destination number sorted_set [sorted_set..]: number个有序集合的交集,交集存储到destination中
zinterstore destination number sorted_set [sorted_set..]: number个有序集合的并集,并集存储到destination中
Redis命令之有序集合_第18张图片
在这里插入图片描述

  • 指定聚合函数
    zunionstore destination number sorted_set [sorted_set..] [AGGREGATE SUM|MIN|MAX ]默认使用SUM作为聚合函数

Redis命令之有序集合_第19张图片

  • 设置权重
    将这个权重与成员的分值相乘,得出成员的新分值,然后执行聚合计算
    Redis命令之有序集合_第20张图片

14. zrangebylex/ zrevrangebylex

  • 带有 [ 符号的值表示在结果中包含与给定值具有同等字典序大小的成员
  • 带有 ( 符号的值表示在结果中不包含与给定值具有同等字典序大小的成员
  • 加号 + 表示无穷大
  • 减号 - 表示无穷小

zrangebylex sorted_set min max:统计位于字典序指定范围内的成员数量
Redis命令之有序集合_第21张图片
Redis命令之有序集合_第22张图片

  • ZREVRANGEBYLEX命令是逆序版的ZRANGEBYLEX命令,它会以逆字典序的方式返回指定范围内的成
    zrevrangebylex sorted_set max min

  • 限制返回数量
    在这里插入图片描述


15. zlexcount

zlexcount sorted_set min max:计有序集合中位于字典序指定范围内的成员数量
在这里插入图片描述


16. zremrangebylex

zremrangebylex sorted_set min max:移除有序集合中位于字典序指定范围内的成员
Redis命令之有序集合_第23张图片


17. zpopmax/zpopmin

zpopmax sorted_set [count]:移除并返回有序集合中分值最大和最小的N个元素
zpopmin sorted_set [count]:移除并返回有序集合中分值最小和最小的N个元素

Redis命令之有序集合_第24张图片


18. bzpopmax/bzpopmin

bzpopmax sorted_set [sorted_set...] timeout
bzpopmin sorted_set [sorted_set...] timeout

  • 接受任意多个有序集合和一个秒级精度的超时时限作为参数
  • 依次检查用户给定的有序集合,并从它遇到的第一个非空有序集合中弹出指定的元素
  • 检查了所有给定有序集合之后都没有发现可弹出的元素,那么它将阻塞执行命令的客户端,并在给定的时限之内等待可弹出的元素出现,直到等待时间超过给定时限为止
  • 超时时限设置为0来让命令一直阻塞

Redis命令之有序集合_第25张图片


参考书籍:
《Redis使用手册》黄健宏

你可能感兴趣的:(Redis,redis,数据库,database)