压缩列表

压缩列表是Redis用于节约内存的数据结构,常作为列表键和哈希键的底层实现。它由特殊编码的连续内存组成,每个节点包含previous_entry_length、encoding和content三个部分。previous_entry_length记录前一个节点长度,encoding表示数据类型和长度,content存储节点值。当节点长度超过254字节时,previous_entry_length需要5字节存储,可能导致连锁更新和内存扩容。
摘要由CSDN通过智能技术生成

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

压缩列表的构成

  压缩列表是Redis为了节约内存而开发的,由一系列特殊编码的连续内存组成的顺序型数据结构。

zlbytes zltail zllen entry1 entry2 entryN zlend
zlbytes zltail zllen entry1
zlbytes uint32_t 4字节 记录整个压缩列表占用的内存字节数:在对压缩列表进行内存重分配,或者计算zlend的位置时使用
zltail uint32_t 4字节 记录压缩列表表尾节点距离压缩列表的起始地址有多少字节:通过这个偏移量,程序无须遍历整个压缩列表就可以确定表尾节点的地址。
zllen uint16_t 2字节 记录了压缩列表包含的节点数量:当这个属性的值小于uint16_MAX(65535)时,这个属性的值就是压缩列表包含节点的数量;当这个值等于65535时,节点的真实数量需要遍历整个压缩列表才能计算得出。
entryX
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值