3.30--Redis之常用数据结构--listpack(总结篇)------加油呀

文章探讨了Redis中的压缩列表quicklistNode存在的连锁更新问题,并介绍了listpack作为替代方案。listpack通过消除每个节点存储前一个节点长度的字段,解决了连锁更新问题,其节点仅包含自身长度,提高了效率和稳定性。
摘要由CSDN通过智能技术生成

quicklistNode 还是用了压缩列表来保存元素,压缩列表连锁更新的问题,来源于它的结构设计,所以要想彻底解决这个问题,需要设计一个新的数据结构。

listpack,目的是替代压缩列表,它最大特点是 listpack 中每个节点不再包含前一个节点的长度了,压缩列表每个节点正因为需要保存前一个节点的长度字段,就会有连锁更新的隐患。

listpack 结构
在这里插入图片描述

istpack entry 是 listpack 的节点

每个 listpack 节点结构如下:
在这里插入图片描述
主要包含三个方面内容:

1.encoding,定义该元素的编码类型,会对不同长度的整数和字符串进行编码;
2.data,实际存放的数据;
3.len,encoding+data的总长度

listpack 没有压缩列表中记录前一个节点长度的字段了,listpack 只记录当前节点的长度,当我们向 listpack 加入一个新元素的时候,不会影响其他节点的长度字段的变化,从而避免了压缩列表的连锁更新问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值