redis数据结构-sds
sds-simple dynamic string简单的动态数组
1、sds定义
2、与c字符串比较
3、sds特性
1)获取长度时间复杂度为O(1)
sds中有len长度字段
2)缓冲器不会溢出
首先sds有预留空闲free存储空间
其次如果空间不够,会动态申请
3)修改字符串最多需要执行N次内存重分配
重分配策略
a)空间预分配
策略是当sds长度小于1m时,预分配空间=sds长度,当大于1m时,预分配1m
b) 惰性空间释放
当sds缩短时,程序不立即释放多出来的字节空间,而是使用free属性将这些字节的数量记录起来,以备将来用,可通过API释放这部分空间
4)可以保存文本或者二进制数据
c字符串除了末尾之外不能有空字符,否则空字符会被误认为字符串结尾,这就导致了c字符串不能报错图片、音频、视频以及二进制数据;而sds是根据len来判读字符串结尾的