Skip to content

02 - 核心数据结构

定位: Redis 作为"数据结构服务器"的基石——7 种核心类型的底层实现 面试高频度: ⭐⭐⭐⭐⭐


一、板块在体系中的位置

依赖关系

  • 上游:**基础与架构** — 单线程事件循环中操作这些结构
  • 本板块:Redis 内存数据模型的核心
  • 下游:**持久化**、**缓存设计**等基于这些结构

二、知识全景图


三、子专题导航

#主题面试频率核心内容
**02.1 SDS**String 底层——SDS⭐⭐⭐⭐⭐动态字符串的预分配、惰性空间释放、二进制安全
**02.2 Quicklist**List 底层——Quicklist⭐⭐⭐⭐ziplist+linkedlist 混合结构、压缩与性能平衡
**02.3 Hash**Hash 底层实现⭐⭐⭐⭐⭐ziplist→hashtable 转换、渐进式 rehash
**02.4 Set**Set 底层实现⭐⭐⭐⭐intset→hashtable 转换、整数集合升级
**02.5 ZSet**ZSet 与 SkipList⭐⭐⭐⭐⭐skiplist+dict 双重结构、跳表原理
**02.6 Stream**Stream 消息队列⭐⭐⭐基数树、消费组、消息确认
**02.7 高级结构**高级数据结构⭐⭐⭐BitMap / HyperLogLog / GEO

四、核心考点速记

考点 1:SDS 相比 C 字符串的优势

C 字符串               SDS
   O(n) 求长度     →    O(1) 长度字段
   \0 不能存       →    二进制安全
   拼接可能溢出    →    自动扩容(预分配)
   不能截断释放    →    惰性空间释放

考点 2:为什么 ZSet 用跳表不用平衡树?

跳表 O(logN) 平均    平衡树 O(logN)
  ✓ 实现简单(~50行)   ✗ 实现复杂(红黑树~500行)
  ✓ 范围查询方便       △ 范围查询也可
  ✓ 插入不旋转         ✗ 插入可能需旋转
  ✓ 内存可调(层高)   ✗ 结构固定

考点 3:渐进式 rehash 原理


📚 相关板块

  • **基础与架构** — 决定了数据结构的操作模型
  • **持久化** — 数据结构如何序列化到磁盘
  • **总纲设计文档**

Knowledge4J — Java 知识库