来自:《Redis开发与运维》第8.3.4节
1.字符串结构
Redis没有采用原生C语言的字符串类型而是自己实现了字符串结构, 内部简单动态字符串(simple dynamic string, SDS) 。如下图所示:
Redis自身实现的字符串结构有如下特点:
- ·O(1) 时间复杂度获取: 字符串长度、 已用长度、 未用长度。
- ·可用于保存字节数组, 支持安全的二进制数据存储。
- ·内部实现空间预分配机制, 降低内存再分配次数。
- ·惰性删除机制, 字符串缩减后的空间不释放, 作为预分配空间保留。
2.预分配机制
因为字符串(SDS) 存在预分配机制, 日常开发中要小心预分配带来的内存浪费,如下表所示: