Redis压缩列表的底层数据结构
Redis为节省内存而开发的压缩列表,是由一系列经过特殊编码的连续内存块组成的顺序数据结构。压缩列表可以包含任意数量的条目,每个条目可以包含一个字节数组或一个整数值。
压缩列表的原理:压缩列表并不是对数据利用某种算法进行压缩,而是将数据按照一定规则编码在一块连续的内存区域,目的是节省内存。
压缩列表的每个节点组成如下:
Previous _ entry _ engage:记录压缩列表中前一个字节的长度。previous _ entry _ engage的长度可以是1字节或5字节。如果前一个节点的长度小于254,则只需要一个字节来表示前一个节点的长度。如果前一个节点的长度大于或等于254,则previous_entry_ength的第一个字节是254,后面是四个字节,表示当前节点的前一个节点的长度。利用这个原理,即从当前节点位置减去前一个节点的长度就可以得到前一个节点的起始位置,压缩后的列表就可以从尾部遍历到头部。这有效地减少了内存的浪费。
编码:节点的编码存储节点内容的内容类型和长度。有两种编码类型,一种是字节数组,另一种是整数。编码区长度为1字节、2字节或5字节。
内容:内容区用于存储节点的内容,内容的类型和长度:内容由编码决定。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/81994.html