目录
目标
列举redis中与zset相关的指令,包括作用、使用时需要注意的地方等。对于某些基本用不到的指令仅一带而过。
BZPOPMIN
BZPOPMIN key [key ...] timeout
O(log(N)) N:set中元素数量
阻塞当前连接,从第一个有元素的sorted set中删除并取出score最小的元素
当超时时间到且没有元素时,返回null
当有元素时,返回由三个数据构成的数组,key、score、value
BZPOPMAX
ZPOPMAX
ZPOPMAX key [count]
O(log(N)*M) N:set中元素数量 M:返回元素数量
删除并返回前count个score大的元素。不提供count,则返回一个最大score的元素。多个count,则返回count个元素。
返回score和元素
ZPOPMIN
ZADD
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
O(log(N)) N:set中元素数量
向sorted set中添加score和元素。如果元素存在,则重新设置score并重新插入到由score排序后的位置。如果key不存在,则新建sorted set。如果key对一个val不为sorted set,则error。
score应可用两位精度浮点数的string形式表示,+-都可以。
options
XX 仅更新已存在元素,忽略新增元素。
NX 仅新增元素,忽略已存在元素。
CH 改变返回值,从默认返回新增元素数量改为本次变更的元素数量,即新增+score更新的元素数量。
INCR 行为与ZINCRBY一致,只操作一对score和val
score范围
使用64bit的double表示score,可接受整数范围+/-2^53.
sorted set维持score正序,即从小到大。相同val不会重复存在,只会更新score。
具有相同score的元素,针对元素使用字典正序进行排序
ZREM
ZREM key member [member ...]
O(M*log(N)) N:set中元素数量,M:删除元素数量
返回已删除元素数量,元素不存在则忽略。
ZREMRANGEBYLEX
ZREMRANGEBYLEX key minVal maxVal
O(M*log(N)) N:set中元素数量,M:删除元素数量
当所有元素的score相同时,强制针对val使用字典排序,删除val位于min max之间的元素。若score不相同,请不要使用。
返回本次删除的元素数量
举例
redis> ZRANGE myzset 0 -1
1) "ALPHA"
2) "aaaa"
3) "alpha"
4) "b"
5) "c"
6) "d"
7) "e"
8) "foo"
9) &#