SortedSet是Set的一个升级,Set的元素顺序是没有保证的,pop的顺序也就无法保证。SortedSet跟Set的最大区别时,添加元素的时候,给这个元素一个score,SortedSet中的元素会按照这个score排序
-
重要的
- zadd [NX|XX] [CH] key score member
- [zrange | zrangebyscore | zrangebylex] key start end
- [zrank | zscore] key member
- zrem key member
- [zremrangebyrank | zremrangebyscore | zremrangebylex] key min max
-
API
- zadd [NX|XX] [CH] key score value [score2 value2] [score3 value3] ...
向key中添加一个分数为score的value
可选参数的意义:
NX:如果存在key,则什么都不做,否则添加新成员
XX:如果不存在key,什么都不做,否则更新value的score
CH:如果不指定CH,则返回的是添加成功的新成员的个数(如果已存在,则不会添加成功),如果指定,则返回所有发生修改的成员的个数 - zrem key member [member2] [member3] ...
从key中删除member - zrange key start end [withscores]
获取key从start到end的所有元素, 返回的元素可以认为是按得分从最低到最高排列。 如果得分相同,将按字典排序。
如果指定withsocres,返回值包含所有元素的score
start,end可以为负数,负数代表倒数第几个 - zincrby key increment member
为有序集key的成员member的score值加上增量increment
increment可以为整数或浮点数,也可以为负数,表示减少分数 - zrank key member
返回有序集key中成员member的排名,按照分数score从小到大的顺序 - zrevrank key member
返回key中成员member的排名,按照score从大到小的顺序 - zrevrange key start end [withsocres]
同zrange,但是顺序是按照分数score从大到小 - zrangebyscore key min max [withscores] [LIMIT offset count]
返回key的有序集合中的分数在min和max之间的所有元素(包括分数等于max或者min的元素)。元素被认为是从低分到高分排序的。
min可以为-inf,表示无限小
max可以为+inf,表示无限大 - zcount key min max
获取key的分数在[min, max]之间的元素数量 - zcard key
获取所有元素数量 - zscore key member
获取key中的member的分数 - zremrangebyrank key start end
删除key中排名从start到end的元素 - zremrangebyscore key min max
删除key中分数在[min, max]之间的元素 - zrangebylex key min max [LIMIT offset count]
同zrangebyscore,但是是按照value值排序
min:字典中排序位置较小的成员,必须以"["开头,或者以"("开头,可使用"-"代替,"["表示包含,"("表示不包含,"-"表示无限小
max:字典中排序位置较大的成员,必须以"["开头,或者以"("开头,可使用"-"代替,"["表示包含,"("表示不包含, "+"表示无限大
- zadd [NX|XX] [CH] key score value [score2 value2] [score3 value3] ...
-
常见场景
-
排行版,我们将用户id和其他信息作为value,分数作为score
zadd tmrank 100 tutu 99 muming 94 tingyu 95 kanxue 92 diudiu 90 sam # 6 # 获取全部的排行榜 zrange tmrank 0 -1 withscores # 获取前三名 zrevrange tmrank 0 2 withscores # 获取后三名 zrange tmrank 0 2 withscores # 获取90分到95分的用户 zrangebyscore tmrank 90 95 withscores # 获取muming的分数 zscore tmrank muming # 获取muming的排行 zrevrank tmrank muming # 删除80到90分的用户 zremrangebyscore tmrank 80 89
-
网友评论