1.动态字符串(Simple Dynamic String)
- 本质:Redis 专属字符串,不是 C语言 原生 char*
- 核心目的:防缓冲区溢出、快速获取长度、减少扩容开销
- 关键特点:
- 存长度字段,取长度 O (1)
- 预分配冗余空间,减少频繁扩容
- 二进制安全,能存图片 / 字节流
- 极简记忆:改良版字符串,更快更安全
2.intset 整数集合
- 本质:只存纯数字的有序数组
- 目的:极致省内存
- 触发升级:存入超出当前类型范围的数(如本来存 int,塞 long),全员升级扩容
- 记忆:纯数字专用小集合,超限就升级
3. ziplist 压缩列表
- 本质:紧凑连续内存块,无多余指针
- 目的:低数据量下省内存
- 缺点:增删改会连锁偏移,数据多了巨慢
- 适用:List/Hash/ZSet 元素少、值小的时候
- 记忆:轻量省内存,量大必翻车

4. quicklist
- 本质:双向链表 + 多个 ziplist 拼接
- 解决痛点:纯链表费内存,纯 ziplist 性能差
- 现在 Redis 列表底层唯一实现
- 记忆:折中产物,兼顾内存和速度
5. dict 哈希表
- 本质:数组 + 链表实现哈希结构
- 核心:扩容缩容、渐进式 rehash
- 重点:不是一次性迁移数据,分批迁移不阻塞业务
- 记忆:Redis 字典底层,慢慢搬家不卡顿


6. skiplist 跳表
- 本质:多层有序链表,替代平衡树
- 优势:实现简单、查询插入效率接近红黑树
- 只用在 ZSet 有序集合
- 记忆:有序排序专用,多层跳着找数据

| 结构 | 特点 | 典型使用场景 |
|---|---|---|
| String | 单值、最简单 | 缓存、计数器、分布式锁 |
| Hash | 多字段对象 | 用户信息、商品详情 |
| List | 有序可重复、链表 | 消息队列、时间线 |
| Set | 无序去重 | 点赞、共同好友、抽奖 |
| ZSet | 有序去重、带分数 | 排行榜、延时任务 |
