加权集合又称为有序集合,首先它是集合,符合去重的特点。另外,通过score设定权重,对集合进行排序。
ZADD key score1 val1 score2 val2 ...
例如,添加单词到number
ZADD number 1 "one" 2 "two" 3 "three"
ZADD key NX score1 val1 score2 val2 ...
使用NX保证只有不存在的时候才会插入新的元素
ZADD number NX 1 "one"
-- 无法插入
ZADD number NX 4 "four"
-- 插入成功
ZADD key XX score1 val1 score2 val2 ...
使用XX保证存在的时候才会更新元素, 一般用于更新权重
ZADD number XX 2 "three"
使用ZREM移除一个或多个元素
ZREM key val1 [val2...]
删除two
ZREM number "two"
删除指定排名范围的元素
ZREMRANGEBYRANK key start end
删除指定权重范围的元素
ZREMRANGEBYSCORE key min max
使用ZSCORE可以获取到指定元素的权重
ZSCORE key val
例如,获取three的权重
ZSCORE number "three"
ZINCRBY key increment val
increment为正表示增加,反之表示减少
ZINCRBY number 2 "two"
-- two的权重+2
ZINCRBY number -2 "two"
-- two的权重-2
ZCARD key
升序排列后的排名用ZRANK,反之用ZREVRANK
ZRANK key val
ZREVRANK key val
结果范围是0~ZCARD - 1, 排序规则采用score值升序(ZRANK)或降序 (ZREVRANK)
ZRANGE key start end [WITHSCORES]
ZREVRANGE key start end [WITHSCORES]
前者使用升序,后者使用降序。
WITHSCORES为可选的,带上这个参数会一起返回权重,不带参数只返回值。
start和end是索引范围 0~ZCARD - 1
ZRANGEBYSCORE key minScore maxScore [LIMIT offset count]
ZREVRANGESCORE key maxScore minScore [LIMIT offset count]
1. 前置是升序,后者是降序
2. 注意参数的顺序,升序时min在前,max在后,降序时相反
3. LIMIT用于限定返回的条数
4. ZRANGEBYSCORE key (minScore maxScore 表示(minScore, maxScore]
5. minScore和maxScore可以使用-inf和+inf表示无穷大
ZCOUNT key min max
统计指定范围的元素个数,min和max的使用与ZRANGEBYSCORE类似
使用方法与集合类似,但是涉及权重的计算
ZINTERSTORE numbers set1 set2 [set3...] AGGREGATE [SUM|MIN|MAX]
numbers表示集合的数量
默认采用权重相加,也可以自己指定
也可以指定新的权重计算(这个权重是集合的权重): score1 * a + score2 * b + score3 * c
ZUNIONSTORE numbers set1 set2 [set3...] WEIGHTS score1 score2 [score3...]
对于权重相同的有序集合的排序采用的是字典序。
ZRANGEBYLEX key min max [LIMIT offset count]
min和max表示范围,可选-表示负无穷,+表示正无穷,(和[表示闭、开 , LIMIT可以限制个数
例如
ZRANGEBYLEX key (a +
ZRANGEBYLEX key [a (b
ZREVRANGEBYLEX key max min [LIMIT offset count]
ZLEXCOUNT key min max
ZREMRANGEBYLEX key min max
移除权重最大或最小的N个元素
ZPOPMAX key N
ZPOPMIN key N
不指定N就只弹出1个
BZPOPMAX set1 set2 [set3...] timeout
BZPOPMIN set1 set2 [set3...] timeout
阻塞,直到可用或超时