介绍
由于在标准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
- 支持自动扩展