Redis设计与实现之SDS和RDB.docxVIP

  • 1
  • 0
  • 约3.58千字
  • 约 8页
  • 2022-03-18 发布于浙江
  • 举报
? ? Redis设计与实现之SDS和RDB ? ? 1.数据结构与对象: ? ? ? Redis数据库里每个键值对都是由对象组成的,其中键总是一个字符串对象,值可以是字符串对象(String)、列表对象(List)、哈希对象(Hash)、集合对象(Set)、有序集合对象(ZSet)等对象的其中一种 ? ? ? Redis采用SDS(简单动态字符串)作为字符串类型进行存储,相较C字符串类型来说,其优点明显且突出如下: ? ? 1.常熟复杂度获取字符串长度: ?? ??? ?无需像C字符串一般对字符串进行遍历后才能获取字符串长度,它拥有自己的len区域,当需要获取字符串长度时只需读取该字符串len属性O(1)就可简洁方便的拿到字符串长度,无需如像C字符串一般将所有字符进行遍历O(n)后才能获取 ? ? 2.杜绝缓冲区溢出: ?? ??? ?很好的解决使用C字符串时产生的缓存区溢出问题,当需要进行字符拼接时,会先检查SDS的空间是否满足即将拼接字符串长度的大小,满足则拼接,如不满足就会自动扩展SDS的空间大小,使之能够装下拼接后的字符串,杜绝缓冲区溢出可能 ? ? 3.减少修改字符串时带来的内存重新分配的次数: ?? ?? ? Redis通过空间预分配策略,来减少连续执行字符串增长所需的内存分配次数 ?? ??? ??? ???空间预分配策略: ?? ?

文档评论(0)

1亿VIP精品文档

相关文档