zset
简介
zset:有序集合。有序集合中的元素可以排序。与列表使用索引下标不同,他给每一个元素设置一个分数作为排序的依据。
比较
常用命令及时间复杂度
//返回结果为成功添加成员个数(可多次插入)
zadd user:ranking 251 tom //添加用户tom及分数251
//zadd 的选项 nx xx ch incr
//分别为member必须不存在,才能添加成功,用于添加
//member必须存在,才能成功 用于更新
//返回此次操作后的有序集合元素和分数发生变化的个数
//对score做增加
zcard key //计算成员个数
zscore key member //计算某个成员的分数
zrank key member //计算member的排名表 从低到高
zrevrank //使用方法同上 但是是从高到低
zrem key member //从key中移除member
zrange key start end //根据分数从低到高 从start 到end 来查
zrevrange key start end//从高到低
zcount key min max//分数从min -max 的个数
还有根据排名、分数范围删除。
求两个集合的交集 并集
内部数据结构
- ziplist 当有序集合的元素个数小于配置参数时(默认为128个)同时每个元素的值小于配置参数(默认64字节)。redis会使用ziplist作为有序集合内部实现,ziplist可以有效减少内存使用。
- skiplist 当ziplist 条件不满足时,就会使用skiplist 作为内部实现。因为此时ziplist的读写效率会下降。