简单动态字符串

56 阅读1分钟

什么是简单动态字符串?

Redis没有直接使用C语言的字符串,而是自己封装了一种字符串,叫SDS(简单动态字符串)

SDS的C源码结构是什么样的?

sturct sdshdr{
unsigned int len;//已使用的字符串长度
unsigned int free;//未使用的字符串长度
char buf[];//字符串数组的引用
}

image.png

SDS以什么作为结尾标识?
空字符串,空字符串不计算到SDS的有效长度中

为什么要使用空字符串作为结尾标识? SDS可以直接使用C字符串函数里面的函数