Redis数据结构之压缩列表(ziplist)

Redis中的压缩列表(ziplist)是用于节省内存的数据结构,适用于存储小整数和短字符串。它作为列表和哈希键的底层实现,由一系列连续内存块组成,包含多个节点,每个节点可存储字节数组或整数值。
摘要由CSDN通过智能技术生成

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

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

数据结构

压缩列表结构
zlbytes zltail zllen entry1 endtry2 ... entryN zlend

zlbytes :四个字节,记录了整个压缩列表总共占用了多少字节数
zltail :四个字节,记录压缩列表表尾节点距离压缩列袤的起始地址有多少字节:通过这个偏移量程序无须遍历整个压缩列表就可以确定表尾节点的地址
zllen :两个字节,记录了整个压缩列表中总共包含几个endtry节点
entryx:非固定字节,记录的是单个节点
zlend: 0xFF 一个字节,十进制的值为 255,标志压缩列表的结尾

entry结构
previous_entry_length encoding  content

previous_entry_length 属性以字节为单位,记录了压缩列表中前一个节点的长度,可以是1字节或者5字节
如果前一节点的长度小于254字节,previous_entry_length占用1字节,具体的长度局存在这1字节中
如果前一节点的长度大于等于254字节,previous_entry_length占用5字节,且第一字节设
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值