redis string底层数据结构sds

redis的string没有采用c语言的字符串数组而采用自定义的数据结构SDS(simple dynamic string)设计

 len 为字符串的实际长度  在redis中获取字符串的key长度的时间复杂度为O(1)

 free 为 buf数组中剩余的空间大小

 buf 保存字符串的数组

使用free杜绝了缓冲区溢出如果free的长度不够值的长度则自动会开辟len长度的空间

redis使用改数据结构的优点

1:空间可以预分配

2:惰性空间释放(使某个键的长度变小时内存不是立即回收而是增加free的大小)

3:二进制安全(redis不是采用c语言字符串的以来判断字符串结束 而sds通过判断len的长度是否为0来判断字符串的长度)

4:redis实际开辟的空间为len+free

原文地址:https://www.cnblogs.com/paulversion/p/8193047.html