目录一、核心两种底层结构1. 压缩列表ziplist2. 跳表skiplist 哈希表dict1跳表 skiplist2字典 dict哈希表二、总结一句话补充RedisZSet同时使用两种结构配合实现根据元素数量和元素大小自动切换一、核心两种底层结构1. 压缩列表ziplist触发条件同时满足集合元素数量≤ 128默认阈值zset-max-ziplist-entries每个元素的memberscore总字节≤ 64 字节默认阈值zset-max-ziplist-value特点连续内存存储内存占用小、读写快每个节点同时保存score和member按score有序排列2. 跳表skiplist 哈希表dict触发条件元素数量 / 元素大小 超出上面两个阈值自动转为该组合结构。1跳表 skiplist作用保证有序、支持范围查询ZRANGE/ZREVRANGE/ 区间遍历按score升序排序多层索引结构平衡树的简易替代增删改查时间复杂度 O (log n)Redis 跳表最大层数固定为32 层2字典 dict哈希表作用O (1) 快速查 scoreKey memberValue score用来实现ZSCORE、ZREM等单成员快速操作二、总结一句话小数据量 / 小元素只用压缩列表 ziplist大数据量 / 大元素跳表 (skiplist) 哈希表 (dict)双结构协作补充Redis 跳表不使用红黑树跳表实现更简单、无锁并发友好、区间遍历性能更强完全适配 ZSet 场景。
Redis ZSet(有序集合)底层数据结构
目录一、核心两种底层结构1. 压缩列表ziplist2. 跳表skiplist 哈希表dict1跳表 skiplist2字典 dict哈希表二、总结一句话补充RedisZSet同时使用两种结构配合实现根据元素数量和元素大小自动切换一、核心两种底层结构1. 压缩列表ziplist触发条件同时满足集合元素数量≤ 128默认阈值zset-max-ziplist-entries每个元素的memberscore总字节≤ 64 字节默认阈值zset-max-ziplist-value特点连续内存存储内存占用小、读写快每个节点同时保存score和member按score有序排列2. 跳表skiplist 哈希表dict触发条件元素数量 / 元素大小 超出上面两个阈值自动转为该组合结构。1跳表 skiplist作用保证有序、支持范围查询ZRANGE/ZREVRANGE/ 区间遍历按score升序排序多层索引结构平衡树的简易替代增删改查时间复杂度 O (log n)Redis 跳表最大层数固定为32 层2字典 dict哈希表作用O (1) 快速查 scoreKey memberValue score用来实现ZSCORE、ZREM等单成员快速操作二、总结一句话小数据量 / 小元素只用压缩列表 ziplist大数据量 / 大元素跳表 (skiplist) 哈希表 (dict)双结构协作补充Redis 跳表不使用红黑树跳表实现更简单、无锁并发友好、区间遍历性能更强完全适配 ZSet 场景。