Redis中的SDS结构
如下为sds的数据结构,使用len存储字符长度,使得strlen命令时间复杂度为O(1);对SDS字符串进行修改时,会先进行剩余空间是否足够进行相关修改操作的判断,若不足则进行扩容,杜绝缓冲区溢出;
struct sdshdr{
int len;//存储字符的长度
int free;//剩余空间长度
char buf[];//内容存储的字符串
}
为减少内存重分配次数,内部使用了空间预分配、惰性空间释放的方法
Redis中的SDS结构
如下为sds的数据结构,使用len存储字符长度,使得strlen命令时间复杂度为O(1);对SDS字符串进行修改时,会先进行剩余空间是否足够进行相关修改操作的判断,若不足则进行扩容,杜绝缓冲区溢出;
struct sdshdr{
int len;//存储字符的长度
int free;//剩余空间长度
char buf[];//内容存储的字符串
}
为减少内存重分配次数,内部使用了空间预分配、惰性空间释放的方法