Redis ZSet(有序集合)底层数据结构
2026/6/7 18:38:31 网站建设 项目流程

目录

一、核心两种底层结构

1. 压缩列表(ziplist)

2. 跳表(skiplist)+ 哈希表(dict)

(1)跳表 skiplist

(2)字典 dict(哈希表)

二、总结一句话

补充


RedisZSet同时使用两种结构配合实现,根据元素数量和元素大小自动切换:

一、核心两种底层结构

1. 压缩列表(ziplist)

触发条件(同时满足):

  1. 集合元素数量≤ 128(默认阈值zset-max-ziplist-entries
  2. 每个元素的member+score总字节≤ 64 字节(默认阈值zset-max-ziplist-value

特点

  • 连续内存存储,内存占用小、读写快
  • 每个节点同时保存scoremember,按score有序排列

2. 跳表(skiplist)+ 哈希表(dict)

触发条件:元素数量 / 元素大小 超出上面两个阈值,自动转为该组合结构。

(1)跳表 skiplist
  • 作用保证有序、支持范围查询ZRANGE/ZREVRANGE/ 区间遍历)
  • score升序排序,多层索引结构,平衡树的简易替代,增删改查时间复杂度 O (log n)
  • Redis 跳表最大层数固定为32 层
(2)字典 dict(哈希表)
  • 作用O (1) 快速查 score
  • Key =member,Value =score
  • 用来实现ZSCOREZREM等单成员快速操作

二、总结一句话

  • 小数据量 / 小元素:只用压缩列表 ziplist
  • 大数据量 / 大元素跳表 (skiplist) + 哈希表 (dict)双结构协作

补充

Redis 跳表不使用红黑树:跳表实现更简单、无锁并发友好、区间遍历性能更强,完全适配 ZSet 场景。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询