美文网首页
Redis深度历险-紧凑列表

Redis深度历险-紧凑列表

作者: 突击手平头哥 | 来源:发表于2021-08-17 23:12 被阅读0次

紧凑列表

Redis5.0又引入了新的数据结构listpack,是在压缩列表基础上的改进,整体有所类似,紧凑列表解决了一个很重要的问题:级联更新;Redis深度历险-压缩列表 - 简书 (jianshu.com)

级联更新

级联更新.png

在紧凑列表中的prevlen有1字节长和5字节长两种情况,在尝试插入红色元素时有两种情况:

  1. 红色节点元素小于254字节,只需要更新黄色节点的prevlen即可
  2. 红色节点元素大于254字节,黄色节点需要扩容prevlen字段并更新数据

在上述第2种情况发生时,也有两种情况:

  1. 黄色元素扩容后依旧小于254字节,只需要更新绿色节点的prevlen即可
  2. 黄色元素扩容后大于254字节,绿色元素则也需要扩容prevlen

如果有多个接近于254字节的元素,就会造成级联更新了

紧凑列表的内存排布

紧凑列表.png
  • total_bytes:总长度
  • size:元素个数
  • entry:元素
    • encoding:编码方式,同样支持很多种
    • content:内容
    • length:本元素长度

紧凑列表每个元素尾部存储了当前元素的长度,元素长度结合total_bytes就可以实现从后往前的遍历,不同元素的内容解耦开了,不再会发生级联更新的问题了

相关文章

  • Redis深度历险-紧凑列表

    紧凑列表 在Redis5.0又引入了新的数据结构listpack,是在压缩列表基础上的改进,整体有所类似,紧凑列表...

  • Redis深度历险-快速列表

    Redis深度历险-快速列表 快速列表就是为了实现list的功能,是基于压缩列表和双向链表的集合实现,主要是规避普...

  • 分布式Redis深度历险-复制

    Redis深度历险分为两个部分,单机Redis和分布式Redis。 本文为分布式Redis深度历险系列的第一篇,主...

  • Redis深度历险-压缩列表

    Redis深度历险-压缩列表 在zset和hash在元素个数较少时会采用压缩列表来存储以节省空间,主要代码在zip...

  • redis利用zset简单限流

    引用出处:老钱的 Redis 深度历险:核心原理与应用实践

  • 蜻蜓点水说说Redis的ziplist的奥秘

    本篇博客参考: Redis 深度历险:核心原理与应用实践 Redis内部数据结构详解(4)——ziplist Re...

  • Redis学习之旅~原理篇

    内容依旧来自 核心原理 线程IO模型 单线程非阻塞IO redis是单线程模型。redis的...

  • Redis深度历险笔记

    Redis深度历险笔记 基础与应用 Redis基础数据结构 5种基础数据结构:string、list、hash(字...

  • redis有序集合对象

    内容来自:《redis设计与实现》购买本书请访问: 京东商城《Redis 深度历险:核心原理与应用实践》购买本书请...

  • redis集合对象

    内容来自:《redis设计与实现》购买本书请访问: 京东商城《Redis 深度历险:核心原理与应用实践》购买本书请...

网友评论

      本文标题:Redis深度历险-紧凑列表

      本文链接:https://www.haomeiwen.com/subject/ywjwbltx.html