Redisbook学习笔记(2)内存映射数据结构(1)压缩列表

本文介绍了Ziplist数据结构的特点及应用。Ziplist是一种特殊的内存列表,用于存储字符数组或整数,广泛应用于哈希键、列表键和有序集合键的底层实现中。文章详细解释了Ziplist的组成及其在不同场景下的使用方式。

Ziplist 是由一系列特殊编码的内存块构成的列表,一个ziplist 可以包含多个节点(entry),每

个节点可以保存一个长度受限的字符数组(不以\0 结尾的char 数组)或者整数,包括:

字符数组

– 长度小于等于63 (26 1)字节的字符数组

– 长度小于等于16383 (214 1)字节的字符数组

– 长度小于等于4294967295 (232 1)字节的字符数组

整数

– 4 位长,介于0 至12 之间的无符号整数

– 1 字节长,有符号整数

– 3 字节长,有符号整数

– int16_t 类型整数

– int32_t 类型整数

– int64_t 类型整数

因为ziplist 节约内存的性质,它被哈希键、列表键和有序集合键作为初始化的底层实现来使

ziplist 的构成

wKiom1L3NyDQJjR8AADlJ6QNttg129.jpg

wKioL1L3N4mzGe1lAARLB_KiIg0575.jpg


wKiom1L3N2ziBKoGAALDv8EHmUU314.jpg

小结

ziplist 是由一系列特殊编码的内存块构成的列表,它可以保存字符数组或整数值,它还是

哈希键、列表键和有序集合键的底层实现之一。

ziplist 典型分布结构如下:

wKioL1L3OAbQ7URnAACwi4LzTa4973.jpg

ziplist 节点的分布结构如下:

wKiom1L3OEbRcPr3AABOAaDIVG4939.jpg

添加和删除ziplist 节点有可能会引起连锁更新,因此,添加和删除操作的最坏复杂度为

O(N2) ,不过,因为连锁更新的出现概率并不高,所以一般可以将添加和删除操作的复

杂度视为O(N) 。


这部分有点不太懂,回头需要复习啊!!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值