Redis架构篇 - 压缩列表

压缩列表

由一系列特殊编码的连续内存组成的顺序型数据结构,可以节约内存。一个压缩列表可以包含多个节点(entry),每个节点可以保存一个整数值或者字节数组。

.

1. 组成部分

在这里插入图片描述

Redis架构篇 - 压缩列表_第1张图片

.

2. 压缩列表节点

在这里插入图片描述
每一个节点可以保存一个字节数组或者一个整数值。

.

previous_entry_length

以字节为单位,记录前一个节点的长度。该属性的长度可以是1字节或者5字节。

Redis架构篇 - 压缩列表_第2张图片

e.g.
Redis架构篇 - 压缩列表_第3张图片

.

encoding

记录节点的content属性的保存的数据类型以及长度。

.

(一)字符数组编码

在这里插入图片描述
Redis架构篇 - 压缩列表_第4张图片

.

(二)整数编码

在这里插入图片描述
Redis架构篇 - 压缩列表_第5张图片

.

content

记录保存的节点的值。可以是一个字节数组或者整数。值的类型以及类型的长度由节点的encoding属性决定。

.

3. 连锁更新(cascade update)

连续多次空间拓展或者收缩的操作。如果存在多个连续的节点的长度介于250字节~253字节,随着节点的插入或者删除,可能会造成previous_entry_length的更新,造成大面积的空间重新分配,即连锁更新。

你可能感兴趣的:(#,Redis)