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

Redis 动态字符串总结

时间:2020-04-25 23:14:44      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:结束   未来   需要   问题   兼容   空字符串   时间   长度   strong   

字符串结构

  

struct sds{
  //记录buf中已使用的字节数 int len;
  //记录buf中未使用的 int free;
  //存储具体内容 char buf[]; }

  

 

与C字符串的区别

  • C字符串取字符串长度时间复杂度O(N),SDS是O(1)。
  • C字符串未考虑数组溢出的问题,比如strcat函数;SDS在发生空间需要扩充时,还会额外分配多余的空间,小于1M则多加len+1,大于1M则加1M。另外,对于字符串减小时,使用free记录空闲内存供未来使用。
  • C字符串只能保存文本数据,并且以空字符串作为结束;SDS采用len作为存储的数据长度,并且可以存储二进制数据。
  • SDS兼容部分C的函数库。

Redis 动态字符串总结

标签:结束   未来   需要   问题   兼容   空字符串   时间   长度   strong   

原文地址:https://www.cnblogs.com/fish-fly/p/12775862.html

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