目录
- 1、介绍
- 2、底层实现
- 【1】压缩列表
- 【2】跳跃表+哈希表
- 3、常用命令
1、介绍
有序集合结合了集合和有序列表的特性,每个元素都会关联一个分数,Redis正是通过这个分数来为集合中的成员进行排序。
2、底层实现
【1】压缩列表
适用条件
1、元素数量 ≤ zset-max-ziplist-entries(默认128个)
2、每个元素的成员长度 ≤ zset-max-ziplist-value(默认64字节)
结构特点
1、连续内存存储,每个元素由相邻节点组成(成员和分数),按分数升序排列
2、插入/删除需遍历并移动数据,时间复杂度为O(N),适用于小规模数据的高效内存利用
【2】跳跃表+哈希表
适用条件
1、当数据规模超过阈值时,就切换为跳跃表和哈希表存储
结构特点
1、哈希表存储member->score映射(O(1)查询)
2、跳跃表按score升序存储
3、常用命令
命令 | 语法 | 作用 |
---|---|---|
ZADD | ZADD key score member [score member …] | 添加元素 |
ZREM | ZREM key member [member …] | 删除元素 |
ZSCORE | ZSCORE key member | 获取元素分数 |
ZRANK | ZRANK key member | 获取元素升序排名 |
ZREVRANK | ZREVERANK key member | 获取元素降序排名 |
ZCARD | ZCARD key | 获取结合元素数量 |
ZCOUNT | ZCOUNT key min max | 统计分数区间元素数 |
ZRANGE | ZRANGE key start stop | 按升序返回区间元素 |
ZREVRANGE | ZREVRANGE key start stop | 按降序区间返回区间元素 |
ZRANGEBYSCORE | ZRANGEBYSCORE key min max | 返回分数区间元素 |
ZREVRANGEBYSCORE | ZREVRANGEBYSCORE key max min | 反向返回分数区间元素 |
ZINCRBY | ZINCRBY key increment member | 增加元素分数 |
ZPOPMAX | ZPOPMAX key | 删除并返回最高分元素 |
ZPOPMIN | ZPOPMIN key | 删除并返回最低分元素 |
ZUNIONSTORE | ZUNIONSTORE dest numkeys key [key …] | 并集计算存储 |
ZINTERSTORE | ZINTERSTORE dest numkeys key [key …] | 交集计算存储 |
ZSCAN | ZSCAN key cursor | 增量迭代元素 |