Redis压缩列表
2021/5/15 19:55:25
本文主要是介绍Redis压缩列表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Redis压缩列表
压缩列表是一种为节约内存而开发的顺序型数据结构。
是列表键和哈希键的底层实现之一。(包含少量列表项,列表项是小整数值或长度较短的字符串)(只包含少量键值对,值是小整数值或长度较短的字符)
是由一系列特殊编码的连续内存块组成的顺序结构.
zlbytes:记录整个压缩列表占用的内存字节数
zltail:表尾结点距离压缩列表起始位置多少字节(如果需要访问表尾结点,无需遍历整个压缩列表就可以得到表尾地址)
zllen:压缩列表中结点的数量
entryx:结点
zlend:用于标记压缩列表的尾端
结点构成:
previous_entry_length:
以字节为单位,记录前一个结点的长度
如果前一个结点长度小于254字节那么previous_entry_length=1字节,在这一个字节记录前一个结点的长度
如果前一个结点长度大于254字节那么previous_entry_length=5字节,将此属性第一个字节设置为0xFE(十进制254),之后四个字节保存前一个结点的长度。
因为结点的previous_entry_length属性记录了前一个结点的长度,所以程序可以通过指针运算,根据当前节点的起始地址来计算出前一个结点的起始地址
压缩列表从表向表头遍历就是此原理、
encoding:记录保存的数据类型以及长度
content:保存结点值,结点值可以是一个字节数组或者整数
连锁更新
eg:一个压缩列表中,有多个连续长度介于250~253字节的结点e1…eN这时,将一个长度大于254字节的的new设置为头结点,那么头结点之后所有结点的previous_entry_length都要进行空间重分配,由1字节转换为5字节,导致连锁反应。
删除结点也可能会导致连锁更新
这篇关于Redis压缩列表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-18Redis安装入门:新手必读指南
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作