有书共读:《Redis设计与实现》第二章读书笔记
有书共读:《Redis设计与实现》第二章读书笔记
第2章:简单动态字符串
本章主要讲的是Redis只会使用C字符串作为字面量,在大多数情况下,Redis使用SDS(Simple Dynamic String,简单动态字符串)作为字符串表示。
每个sds.h/sdshdr结构表示一个SDS值:
struct sdshdr{
int len;//表示buf数组中已使用字节的数量=SDS所保存字符串的长度
int free;//记录buf数组中未使用字节的数量
char buf[];//字节数组,用于保存字符串
};
比起C字符串,SDS具有以下优点:
1)常数复杂度获取字符串长度。
2)杜绝缓冲区溢出。
3)减少修改字符串长度时所需的内存重分配次数。
4)二进制安全。
5)兼容部分C字符串函数。