Redis 提供 5 大基本数据类型:String(字符串)、List(列表)、Set(集合)、Hash(哈希)、Zset(有序集合)。其底层实现会根据数据特征智能切换数据结构,以达到性能与内存的最优平衡。
0、底层数据结构简介
- 压缩列表 (Ziplist):早期使用的紧凑结构,但因存储“前一项长度”而存在连锁更新风险,修改一个元素可能引发后续元素的内存重排。
- 列表包 (ListPack):Redis 7.0 引入,是 Ziplist 的优化版。它将“长度信息”放在条目末尾,且只记录自身长度,彻底解决了连锁更新问题。
- 哈希表 (HashTable):使用渐进式 rehash 进行扩容。内部维护两个哈希表(
ht[0]和ht[1]),扩容时逐步将ht[0]的数据迁移到更大的ht[1]。期间,新写入的数据直接进入ht[1],查找时会同时检查两个表。迁移完成后释放ht[0],并将ht[1]设置为新的主表。
2025/12/27...大约 5 分钟