一、概述
Redis 是高性能 Key-Value 内存数据库,其 5 种常用数据类型底层依赖了多种经典数据结构。理解这些底层实现,能帮助我们:
- 根据业务场景选择最合适的数据类型
- 预估内存消耗,避免性能陷阱
- 理解框架设计背后的权衡取舍
| Redis 数据类型 | 底层数据结构 |
|---|---|
| String | SDS(简单动态字符串) |
| List | 压缩列表 / 双向链表 / QuickList |
| Hash | 压缩列表 / 散列表 |
| Set | 整数集合 / 散列表 |
| Sorted Set | 压缩列表 / 跳表 + 散列表 |
二、列表(List)
2.1 压缩列表(ziplist)
当数据量小时使用,需同时满足:
- 单个元素 < 64 字节
- 元素个数 < 512
Mermaid · 渲染中(下方为源码)
graph LR ZL[zlbytes] --> ZTL[zltail] --> ZLEN[zllen] --> E1[entry1] --> E2[entry2] --> E3[entry3] --> END[zlend]
核心优势:连续内存,比数组更省空间(允许不同大小的元素紧凑排列)。
2.2 双向链表
数据量大时使用。Redis 的链表实现值得借鉴: