Redis 的设计与实现——数据结构实现之(四)压缩列表

Ziplist 是Redis中对于少量列表项的实现用于hash和list的实现,是由连续的内存块组成的数据结构,主要是为了节约内存,没有一个struct:

其中每个节点的entry的值为:

其中previous_entry_length用于保存前一个节点的长度,当前一个结点长度在254之内,则该属性只有一个字节,否则该属性由5个字节组成,其中第一个字节为0XFE。这个属性当然是为了从后向前对列表进行遍历了。

连锁更新

       什么是连锁更新呢?就是列表突然插入一个长度大于254的元素(或者突然删除一个小元素)导致的节点长度的连锁更新,这样会导致O(N^2)的时间复杂度,也就是最坏情况下的时间复杂度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值