【Redis】zset类型
目录
- 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 | 增量迭代元素 |
