简单动态字符串(Simple Dynamic String,SDS)

Redis没有直接使用C语言传统的字符串,而是自己构建了一种名为简单动态字符串(Simple dynamic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。

其实SDS等同于C语言中的char * ,但它可以存储任意二进制数据,不能像C语言字符串那样以字 符’\0’来标识字符串的结 束,因此它必然有个长度字段。

定义

 

优点

获取字符串长度的复杂度为O(1)。

杜绝缓冲区溢出。

减少修改字符串长度时所需要的内存重分配次数。

二进制安全。

 兼容部分C字符串函数。

它具有很常规的 set/get 操作,value 可以是String也可以是数字,一般做一些复杂的计数功能的缓存。