struct sdshdr{
//记录buf中已使用字节的数量
//等于SDS中所保留字符串的长度
int len;
//记录bug中未使用字节的数量
int free;
//字节数组,用于保存字符串
char buf[];
}
2.SDS中buf的空间分配
在C中,当对字符串进行操作的时候,会重新读字符串的长度,并重新分配长度,避免溢出的情况,导致数据丢失。
但是在redis中,为了避免重新分配这一过程导致效率变低,则采用额外分配的机制,即会存在一些空的字节在buf中,也就是free的字节数量。