redis 动态字符串sds
1)常数复杂度获取字符串长度。(redis在数据存入时就保存了字符串长度)
2)杜绝缓冲区溢出。(将要存入sds前会检测字符串长度,不够时会扩充缓冲区长度。(当小于1M时,长度扩大一倍,大于1M扩大1M))
3)减少修改字符串长度时所需的内存重分配次数。 (字符串做减操作时, 不会重新分配长度,而是把多出来的存入缓冲区)
4)二进制安全。(sds不同与c,sds是用len判断长度,而c是查找‘\n’来计算字符串长度,所以sds可以存入二进制数据)
5)兼容部分C字符串函数。 因为sds用‘\n’结尾,所以兼容大部分c字符串函数