Redis 的设计与实现——数据结构实现之(四)压缩列表

Ziplist 是Redis中对于少量列表项的实现用于hash和list的实现,是由连续的内存块组成的数据结构,主要是为了节约内存,没有一个struct:

其中每个节点的entry的值为:

其中previous_entry_length用于保存前一个节点的长度,当前一个结点长度在254之内,则该属性只有一个字节,否则该属性由5个字节组成,其中第一个字节为0XFE。这个属性当然是为了从后向前对列表进行遍历了。

连锁更新

       什么是连锁更新呢?就是列表突然插入一个长度大于254的元素(或者突然删除一个小元素)导致的节点长度的连锁更新,这样会导致O(N^2)的时间复杂度,也就是最坏情况下的时间复杂度。

发布了47 篇原创文章 · 获赞 8 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/nanchengyu/article/details/89321206
今日推荐