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来判读字符串结尾的

原文地址:https://www.cnblogs.com/yanwei-wang/p/8072863.html