底层:快速列表quicklist
在redis早期版本中,list底层使用的是ziplist和linkedlist(元素少时ziplist,多时linkedlist),后来因为链表指针的空间占用大换成了现在的quicklist,quicklist就是两者的混合体,它将linkedlist按段拆分,每一段是一个ziplist,每个ziplist用双向指针连接起来。ziplist默认一个存8k字节,这个可以通过配置调整。
压缩深度
redis会对ziplist进行压缩,为了支持快速的push和pop,一般头尾两个ziplist不压缩,也就是压缩深度为1,默认深度为0,也可以通过配置调整。
本文深入探讨了Redis中List数据结构的底层实现原理,从早期版本的ziplist和linkedlist到现在的quicklist,揭示了quicklist如何结合两者优势,通过将linkedlist按段拆分为ziplist并用双向指针连接,有效减少空间占用。同时,文章还介绍了ziplist的压缩机制,包括压缩深度的概念及其对push和pop操作的影响。
1108

被折叠的 条评论
为什么被折叠?



