码迷,mamicode.com
首页 > 其他好文 > 详细

redis2. sds 字符串(SimpleDynamicString)

时间:2019-11-26 09:32:13      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:操作   bsp   字符   tps   code   ike   内存   原来   比较   

技术图片

 

 

1.标准strcat 会有溢出风险,sdscat无溢出风险

2.空间预分配,惰性空间释放

  空间预分配:sds分配空间时,如果原来是5,free是0, sdscat追加一个10长度的,此时字符串加长到15,free也同时分配15,总长为15 + 15free + 1(/0) 为31字节; 若大于1M后则以1M为单位追加。

  这么做的原因是,内存分配是比较耗时的操作【https://baike.baidu.com/item/realloc/659993?fr=aladdin】,在原地址空间后面若无足够的可用空间,还需要内存拷贝。这样预分配free空间以减少后续的内存分配操作。

  惰性过期:free后不会释放空间,会把减少的字符长度追加到free上。

 3.二进制安全

 

技术图片

 

 技术图片

 

 

 

 

 

redis2. sds 字符串(SimpleDynamicString)

标签:操作   bsp   字符   tps   code   ike   内存   原来   比较   

原文地址:https://www.cnblogs.com/do-your-best/p/11903450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!