文章目录
1. 简介
- 有序集合中的每个元素都由一个成员和一个与成员相关联的分值组成,其中成员以字符串方式存储,而分值则以64位双精度浮点数格式存储
example:
- 有序集合中的每个成员都是独一无二, 按照它们各自的分值大小进行排序,分值相同时根据字典序进行排列
- 成员不能相同,分值可以相同
2. zadd
- 添加
- 更新
- XX选项
XX选项的ZADD命令只会对有序集合已有的成员进行更新,而不会向有序集合添加任何新成员
- NX选项
带有NX选项的ZADD命令只会向有序集合添加新成员,而不会对已有的成员进行任何更新
- ch选项
默认情况不带ch选项时,zadd返回的是新添加的成员的数量,修改的成员数量不会返回,带ch选项后也会返回被修改的成员的数量
3. zrem
zrem sorted_set member1 member2....
:从有序集合中移除指定的一个或多个成员以及与这些成员相关联的分值
如果用户给定的某个成员并不存在于有序集合中,那么ZREM将自动忽略该成员
4. zscore
zscore sorted_set member
:获取与给定成员相关联的分值
5. zincrby
zincrby sorted_set increment member
:对有序集合中指定成员的分值执行自增操作,为其加上指定的增量
-
增加
-
减少
-
成员不存在/集合不存在
给定成员并不存在于有序集合中,或者给定的有序集合并不存在,那么ZINCRBY命令将直接把给定的成员添加到有序集合中,并把给定的增量设置为该成员的分值,效果相当于执行ZADD命令
6. zcard
zcard sorted_set
: 获取有序集合包含的成员数量
7. zrank/zrevrank
zrank sorted_set member
:获得成员的升序排列排名
zrevrank sorted_set member
:获得成员的降序排列排名
8. zrange/zrevrange
zrange sorted_set start end
: 获取正序排列排名[start,end]范围内的元素
zrevrange sorted_set start end
: 获取逆序排列排名[start,end]范围内的元素
9. zrangebyscore/zrevrangebyscore
zrangebyscore sorted_set min max
: 获取分数在[min,max]内的成员
zrevrangebyscore sorted_set max min
: 获取分数在[max,min]内的成员
min参数和max参数分别用于指定用户想要获取的成员的最小分值和最大分值
-
获取成员数量
zrangebyscore sorted_set min max limit offset count
offset参数用于指定命令在返回结果之前需要跳过的成员数量,而count参数则用于指示命令最多可以返回多少个成员
-
使用开区间作为范围
-
使用无限值作为范围
10. zcount
zcount sorted_set min max
:统计出有序集合中分值介于指定范围之内的成员数量
11. zremrangebyrank
zremrangebyrank sorted_set start end
:从升序排列的有序集合中移除位于指定排名范围内的成员,然后返回被移除成员的数量
12. zremrangebyscore
zremrangebyscore sorted_set min max
:从有序集合中移除位于指定分值范围内的成员,并在移除操作执行完毕返回被移除成员的数量
区间可以使用开区间也可以使用无穷区间,和zrangebyscore/zrevrangebyscore中的使用方法一样
13. zunionstore/zinterstore
zunionstore destination number sorted_set [sorted_set..]
: number个有序集合的交集,交集存储到destination中
zinterstore destination number sorted_set [sorted_set..]
: number个有序集合的并集,并集存储到destination中
- 指定聚合函数
zunionstore destination number sorted_set [sorted_set..] [AGGREGATE SUM|MIN|MAX ]
默认使用SUM作为聚合函数
- 设置权重
将这个权重与成员的分值相乘,得出成员的新分值,然后执行聚合计算
14. zrangebylex/ zrevrangebylex
- 带有 [ 符号的值表示在结果中包含与给定值具有同等字典序大小的成员
- 带有 ( 符号的值表示在结果中不包含与给定值具有同等字典序大小的成员
- 加号 + 表示无穷大
- 减号 - 表示无穷小
zrangebylex sorted_set min max
:统计位于字典序指定范围内的成员数量
-
ZREVRANGEBYLEX命令是逆序版的ZRANGEBYLEX命令,它会以逆字典序的方式返回指定范围内的成
zrevrangebylex sorted_set max min
-
限制返回数量
15. zlexcount
zlexcount sorted_set min max
:计有序集合中位于字典序指定范围内的成员数量
16. zremrangebylex
zremrangebylex sorted_set min max
:移除有序集合中位于字典序指定范围内的成员
17. zpopmax/zpopmin
zpopmax sorted_set [count]
:移除并返回有序集合中分值最大和最小的N个元素
zpopmin sorted_set [count]
:移除并返回有序集合中分值最小和最小的N个元素
18. bzpopmax/bzpopmin
bzpopmax sorted_set [sorted_set...] timeout
bzpopmin sorted_set [sorted_set...] timeout
- 接受任意多个有序集合和一个秒级精度的超时时限作为参数
- 依次检查用户给定的有序集合,并从它遇到的第一个非空有序集合中弹出指定的元素
- 检查了所有给定有序集合之后都没有发现可弹出的元素,那么它将阻塞执行命令的客户端,并在给定的时限之内等待可弹出的元素出现,直到等待时间超过给定时限为止
- 超时时限设置为0来让命令一直阻塞
参考书籍:
《Redis使用手册》黄健宏