简单动态字符串
什么是 SDS
SDS
,即 Simple Dynamic String,简单动态字符串。
Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将 SDS 用作 Redis 的默认字符串表示。
在 Redis 里面,C 字符串只会作为字符串字面量(string literal)用在一些 无须对字符串值进行修改的地方
,比如打印日志。
当 Redis 需要的不仅仅是一个字符串字面量,而是一个可以被修改的字符串值时,Redis 就会使用 SDS 来表示字符串值,比如在 Redis 的数据库里面,包含字符串值的 键值
对在底层都是由 SDS 实现的。
SDS 的定义
在 SDS 结构中包含:
buf len free
举例:
- len 属性的值等于 5,表示在 SDS 中保存了一个五字节长度的字符串
- free 属性的值等于 0,表示在 SDS 中没有分配任何未使用的空间
- buf 属性是一个 char 数组,前五位保存了五个字符,在最后一个字节保存了一个空字符'\0'
需要注意的是:SDS 遵循 C 字符串以空