Redis数据结构(六) —压缩列表

压缩列表

压缩列表是列表键和哈希键的底层实现之一, 当一个列表键只包含少量列表项, 并且每个列表项要么就是小整数值, 要么就是长度比较短的字符串, 那么Redis就会使用压缩列表来做列表键的底层实现. 另外, 当一个哈希键只包含少量键值对, 并且每个键值对的键和值要么就是小整数值, 要么就是长度比较短的字符串, 那么Redis就会使用压缩列表来做哈希键的底层实现

1.压缩列表的构成

压缩列表是Redis为了节约内存而开发的, 是一系列特殊编码的连续内存块组成的顺序型数据结构. 一个压缩列表可以包含任意多个节点, 每个节点保存一个字节数组或者一个整数值.

在这里插入图片描述

属性 类型 长度 用途
zlbytes unit32_t 4字节 记录整个压缩列表占用的内存字节数, 在对压缩列表进行内存重分配,或者计算zlend时使用
zltail unit32_t 4字节 记录压缩列表表尾节点距离压缩列表的的起始地址有多少字节, 通过这个偏移量, 程序无须遍历整个压缩列表就能确定表尾节点的地址
zllen unit16_t 2字节 记录了压缩列表包含的节点数量, 当小于UINT16_MAX时,是真正的大小,若超过这个值, 则需要遍历整个压缩列表才能得出
entryX 列表节点 不定 压缩列表包含的各个节点, 节点的长度由节点保存的内容决定
zlend unit8_t 1字节
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值