Redis数据结构之有序集合
简介
有序集合中的元素不重复,但是可以排序,和列表所用索引下标不同,它给每个元素设置一个分数作为排序的依据,有序集合提供了获取指定分数和元素范围查询、计算成员排名等功能
常用命令介绍
命令 | 命令描述 |
---|---|
zadd key score member [score member....] |
添加成员,附加nx xx ch incr四个选项 |
zcard key |
计算成员个数 |
zscore key member |
计算某个成员分数 |
zrank|zrevrank key member |
zrank是按分数从低到高返回排名,zrevrank反之 |
zrem key member [member...] |
删除元素 |
zincrby key increment member |
增加成员分数 |
zrange|zrevrange key start end [withscores] |
返回指定排名范围的成员,加上withscores,同时会返回成员的分数 |
zrangebyscore|zrevrangebyscore key min max [withscores] [limit offset count] |
按照分数从低到高返回,limit offset count 限制输出的起始位置和个数,max和min还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大 |
zcount key min max |
返回指定分数范围的成员个数 |
zremrangebyrank key start end |
删除指定排名内的升序元素 |
zremrangebyscore key min max |
删除指定分数范围的成员 |
求交集zinterstroe destination numkeys key [key...] [weights weight [weight...]] [aggregate sum|min|max]
destination:交集计算结果保存到这个key
numkeys:需要做交集计算的key的个数
key [key…]:需要做交集计算的key
weights weight [weight…]:每个key的权重,在做交集计算时,每个key中的每个member会将自己分数乘以这个权重,每个key的权重默认是1
aggregate sum|min|max:计算成员交集后,分值可以按照sum、min、max做汇总,默认值是sum
求并集
和求交集一样 只是zinterstroe 变成zunionstore
内部编码
ziplist(压缩列表)
skiplist(跳跃表)
使用场景
排行榜系统,要排序的值设定为有序集合的分数,然后就可以特定排序,