介绍
由于在标准C中没有字符串这一类型,因而Redis实现了一个自己的字符串sds。
源文件
sds.h sds.c
分析
数据结构
// sds 类型
typedef char *sds;
// sdshdr 结构
struct sdshdr {
// buf 已占用长度
int len;
// buf 剩余可用长度
int free;
// 实际保存字符串数据的地方
char buf[];
};
特点
主要支持如下操作
new,dump,cat,cpy,printf,trim,range,tolower/toupper,cmp,split,fromlonglong,以及和hex之间的转换等。
技巧:
- sds就像是管理内存一样不过这里是管理的字符,需要保存其长度和空闲空间
- 使用预分配空间来扩展sds
- 支持自动扩展