简单动态字符串

tech2022-09-11  111

struct SDS<T> { T capacity; // 数组容量 T len; // 数组长度 byte flags; // 特殊标识位,不理睬它 byte[] content; // 数组内容 }

SDS遵循C字符串以空字符结尾的惯例,保存空字符的1字节空间不计算在SDS的len属性里面,并且为空字符分配额外的1字节空间,以及添加空字符到字符串末尾等操作,都是由SDS函数自动完成的,所以这个空字符对于SDS的使用者来说是完全透明的。这样可以重用一部分C字符串函数里面的函数。

SDS优势

常数时间内获取长度杜绝缓冲区溢出减少修改字符串带来的重分配次数:空间预分配和惰性空间释放二进制安全。SDS API都会以处理二进制的方式来处理SDS存放在buf数组里的数据。通过使用二进制安全的SDS,而不是C字符串,使得Redis不仅可以保存文本数据,还可以保存任意格式的二进制数据。兼容部分C字符串函数

最新回复(0)