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
Redis数据结构之有序集合

内部编码

ziplist(压缩列表)
skiplist(跳跃表)

使用场景

排行榜系统,要排序的值设定为有序集合的分数,然后就可以特定排序,