Redis压缩列表

Redis压缩列表

  • 概述
    • 压缩列表 ziplist 是列表键和哈希键的底层实现之一。
    • 为了节约内存而开发
  • 构成
    • zlbytes
      • 占用字节数
    • ztail
      • 头尾的偏移量
    • zllen
      • 节点数量
    • entryX
      • 列表节点
        • encoding
          • 数据类型及长度
            • 字节数组
              • 1,2,5字节 最高位00,01,10
            • 整数
              • 最高位11开头
        • content
          • 保存节点值
        • previouse_entry_length
          • 前一节点的长度1字节或5字节
    • zlend
      • 标记列表末端
  • 连锁更新
    • 如果前一节点长度小于254字节,previous_entry_length 用一个字节保存长度值
    • 如果前一节点长度大于等于254字节,previous_entry_length用5个字节保存长度值
    • 问题
      • 前几节点连续几个250-253字节的,一个长度为254的节点插入头结点,后面随之都要重新分配空间
      • 删除节点同样会触发连锁更新
      • 每次分配时间复杂度O(N),连锁更新最坏时间复杂度O(N^2)
    • 注意
      • 虽然时间复杂度高,但是发生的概率并不会很高
      • 即使发生,只要影响的节点不多也不会对性能造成影响
      • 平均时间复杂度O(N)不会影响正常的操作
  • 参考
  • 《Redis设计与实现》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值