有序集合ZET
场景
- 排行榜(热销商品,帖子排名,热门数据)
- 各类有序榜单(成绩排名,关注时间排名)
SET
对比
- 数据唯一的集合
SET
无序,ZSET
有序
命令
ZADD
ZADD key score member[[score member][score member]...]
- 将一个或多个score,member插入到有序集合中
- 如果某个
member
已经是有序集的成员,那么更新这个member
的score
值,并通过重新插入这个member
元素,来保证该member
在正确的位置上 score
可以是整数或双精度浮点数- 如果
key
不存在,则创建一个空的有序集并执行操作
ZCARD
ZCARD key
- 统计有序集合中的元素个数
ZCOUNT
ZCOUNT key min max
- 返回有序集合score在min,和max之间的个数,包含min,max
ZLEXCOUNT
ZLEXCOUNT key min max
- 返回有序集合中member在min,和max之间的的元素个数,包含min,max
ZINCRBY
ZINCRBY key increment member
- 增加/减少member的score
- 当key不存在或member不存在时,会执行
ZADD key increment member
操作
ZUNIONSTORE
ZUNIONSTORE destination unmkeys key[key...][WEIGHTS weight [weight...]] [AGGREGATE SUM|MIN|MAX]
- 计算给定的一个或多个有序集的并集,其中给定
key
的数量必须以numkeys
参数指定,并将该并集(结果集)储存到destination
- 默认情况下,结果集中某个成员的
score
值是所有给定集下该成员score
值之 和 - 使用 WEIGHTS 选项时,可以为各个有序集合输入指定一个乘法系数(Multiplication factor )。这意味着在将每个有序集合输入中的每个元素的分值传递给聚合函数(Aggregation function)之前,会将该分值乘以对应的系数。当未给定 WEIGHTS 选项时,乘法系数默认为 1
- 使用 AGGREGATE 选项时,可以指定并集运算结果的聚合方式。该选项默认值为 SUM,即将输入中所有存在该元素的集合中对应的分值全部加一起。当选项被设置为 MIN 或 MAX 任意值时,结果集合将保存输入中所有存在该元素的集合中对应的分值的最小或最大值
- 如果目标键 destination 已经存在,将会被覆盖。
ZINTERSTORE
ZINTERSTORE destination numkeys key [key...] [WEIGHTS weight [weight...]] [ARGREGATE SUM|MIN|MAX]
- 同
ZUNIONSTORE
,区别在于,此命令是交集
ZSCORE
ZSCORE key member
- 返回有序集合中成员member的score值
- 如果不存在返回nil
ZRANK
ZRANK key member
- 返回有序集合key中成员member的排名.
- 按照score的值从小到大排序
ZREVRANK
ZREVRANK key member
- 返回有序集合key中成员member的排名.
- 从大到小排列
ZRANGE
ZRANGE key start stop[WITHSCORES]
- 返回从start到stop之间的成员
- 通过
WITHSCORES
让成员和值一起返回 - 成员按照
score
的值递减排列(从大到小)
ZREVRANGE
ZREVRANGE key start stop [WITHSCORES]
- 同
ZRANGE
,成员按照score
递增排列(从小到大)
ZRANGEBYSCORE
ZRANGEBYSCORE key min max [WITHSCORES][LIMIT offset count]
- 返回有序集合key中,所有score值位于min,max之间(包括min,max)的成员
- 按照
score
的值递增(从小到大)排列 - LIMIT参数指定返回结果的数量以及区间(就像SQL中的
SELECT LIMIT offset, count
)
ZREVRANGEBYSCORE
ZREVRANGEBYSCORE key max min [WITHSCORES][LIMIT offset count]
- 同上,区别是按照
score
的值递减排列(从大到小)
ZSCAN
- 类似
SCAN
ZREM
ZREM key member[member...]
- 移除有序集合中一个或多个成员,不存在的成员将被忽略
ZREMRANGEBYLEX
ZREMRANGEBYLEX key min max
- 删除集合中指定区间score完全相同的元素
ZREMRANGEBYSCORE
ZREMRANGEBYSCORE key min max
- 移除集合中score在min,max(包含minx,max)之间的成员
ZREMRANGEBYRANK
ZREMRANGEBYRANK key start stop
- 删除指定排名区间内的成员,包含start,stop
ZPOPMAX
ZPOPMAX key[count]
- 删除并返回集合中count个分数最高的成员
- 返回的元素按照score从大到小排列
- 起始版本5.0.0
ZPOPMIN
- 同上,区别在于是返回分数最低的
BZPOPMAX
,BZPOPMIN
- 分别是
ZPOPMAX
,ZPOPMIN
的堵塞版本 BZPOPMAX key[key...]timeout
BZPOPMIN key[key...]timeout