压缩列表

  • 压缩列表是为了节约内存而开发的,是由一系列特殊编码的连续内存组成的顺序型数据结构
  • 一个压缩列表可以包含任意多个节点entry,每个节点可以保存一个字节数组或一个整数值
  • 每个压缩节点有三个部分组成
    • previous_entry_length
      • 以字节为单位,记录了前一个节点的长度,长度可以是1字节或5字节
    • encoding
      • 记录了节点的content属性所保存数据的类型以及长度
    • content
      • 负责保存节点的值,可以是一个字节数组或整数,值类型和长度由节点的encoding属性决定
  • 连锁更新,cascade update
    • 在特殊情况下产生的连续多次空间扩展操作称之为连锁更新
    • 除了添加新节点可能会引发连锁更新外,删除节点也可能会引发连锁更新