Simple Dynamic String(SDS)
struct sdshdr {
// 已使用字节数
int len;
// 未使用字节数
int free;
// 字节数组,用来保存字符串
char[] buf;
}
- 常数复杂度获取字符串长度
- 杜绝缓存区溢出
- 减少修改字符串时带来的内存重分配次数
- 空间预分配:小于1MB时,分配和len同样大小的内存空间;大于等于1MB时,分配1MB
- 惰性空间释放
- 二进制安全,可以存储任意二进制格式的数据,用len来判断长度,而非'\0'
- 兼容C字符串函数
字典
- ht[0]迁移到ht[1]使用渐进式rehash,防止过大停顿,copy on write
- 被用做Redis的底层实现
跳跃表
- 是有序集合的底层实现
- 每个节点的层高是1到32之间的司机数
- 对象是唯一的,按照分值从小到大排序
压缩列表(ziplist)
- 列表键和哈希键的底层实现之一