Redis 没用用 C语言的字符串,而是自己构建一个简单动态字符串(simple dynamic string)作为redis默认的字符串。 但是在redis里一些无需对字符串改变的地方会使用C字符串 比如打印日志
SDS 结果定义:
struct sdshdr {
//记录buf数组已使用的字节数量 等于字符串的长度
int len;
//未使用的空间
int free;
//字节数据
char buf[];
}
优点: 计算长度时间复杂度为O(1), 拷贝时不会出现内存溢出. 减少修改字符串内存分配的次数、二进制安全。
缺点: 仅能使用部分:<string.h> 库中的函数