SDS -> Simple Dynamic String,简单动态字符串,为了性能和实现上的需要,Redis中用SDS取代了标准C中字符串(对不起,一个以'\0'结尾的char*)类型。SDS的实现比较简单,但却是维持Redis高效率的关键组件,SDS的源码在Redis源码文件中的sds.h和sds.c中可以找到。
相对于传统的标准C字符串,SDS主要有下面几个看起来好一点的特性:
- 二进制安全,字符串中允许拥有任意类型的数据,包括'\0'
- 在O(1)时间内获取字符串长度(strlen)
- 高效的字符串追加操作(append)
第一点和第二点的实现其实很简单,为了在O(1)时间内获得长度,我们只有把这个长度存起来,有了长度我们也就能够判断字符串的开始和终止,也就是说,我们不再需要强制要求字符串是'\0'终止的了。