Redis 动态字符串总结
字符串结构
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的函数库。
相关推荐
文山羊 2020-10-20
Tristahong 2020-10-14
stulen 2020-08-15
xiaoseyihe 2020-08-11
amberom 2020-08-03
fengzhiwu 2020-08-01
pythonxuexi 2020-07-30
leoaran 2020-07-21
littie 2020-07-19
kkpiece 2020-07-08
zlsdmx 2020-07-05
银角大王 2020-07-05
yjsflxiang 2020-07-04
shonmark 2020-06-27
chinawangfei 2020-06-16
liusarazhang 2020-06-14
xiaobaif 2020-06-14