SDS
申明:我们说的键一般指的是redis的key和value,字符串键指的是Value是字符串的,而key,基本上都是字符串形式
SDS使用范围
- 1.字符串键
SDS的组成
- 1.int len:buf数组中已经使用的字节数量。
- 2.int free:buf数组中未使用字节的数量。
- 3.char buf[]:字节数组,用于保存字符串。也可以保存字节
传统字符串的缺点
- 1.是以空字符(\0)结尾。
- 2.如果需要频繁修改字符串,则需要重新生成字符串,这样就需要释放以前字符串的内存,再开辟新的内存。
- 3.无法常数复杂度获取字符串长度。
- 4.容易缓冲溢出(因为未获取字符串长度,存储的缓冲太长导致溢出)
- 5.字符串中的字符必须符合某种编码,并且除了结尾空字符,中间任何部分不能包含空字符。因而只能保持文本数据,对于图片等二进制数据无法保存。
SDS的优点
- 1.可以作为数据库中字符串值
- 2.可以作为缓冲区,比如AOF的缓冲区和客户端状态的输入缓冲区
- 3.遵循结尾也是空字符的好处是可以直接重用一部分c字符串函数库里面的函数。
- 4.设置和更新SDS的工作是有SDS的函数自动完成
- 5.空间预分配和惰性空间释放
- 6.可以在字符串除了尾部之外出现空字符。
- 7.SDS的API 都会以处理二进制的方式来处理存放在buf数组里面的数据,因此可以保存文本之外的数据。
网友评论