字符串
1 SDS的定义
struct sdshdr {
int len;//记录buf中使用的字节数量,=sds所保存字符串的长度
int free;//记录buf中未使用的字节长度
char buf[];//字节数组,用于保存字符串
}
1.1 sds 与c字符串的区别
c要获取一个字符串必需遍历所有O(N),而sds因为有len所以只要访问len就可以知道其长度,O(1)
Tables | C字符串 | SDS |
---|---|---|
api不安全可能会造成缓冲区溢出 | 安全 | |
修改字符串长度N次必须执行N次内存重分配 | 最多N次 | |
只能保存文本数据 | 文本或者二进制数据 |
链表
被广泛用于实现redis的各种功能
双端链表
无环链表
可以吧平常各种不同类型的值