redis使用快速列表的背景:
早起redis的list的存储结构是ziplist和linkedlist,也就是说元素少的时候用的是ziplist,元素多的时候用linkedlist。
![](https://i-blog.csdnimg.cn/blog_migrate/e4c8c41d07753271d971c15e36dc76cf.png)
使用链表带来的问题是
- prev和next就要占据16个字节,(64位系统中的指针是8个字节),
- 每个节点的内存都是单独分配的,这样做的话 会加剧内存的碎片化。
quickList的数据结构为:
![](https://i-blog.csdnimg.cn/blog_migrate/d7e1d0d9b2faefbebe857d339f3a322c.png)
quicklist是ziplist和linkedlist的混合体,它将linkedlist按段拆分,然后每一个段使用ziplist来紧凑存储,多个ziplist通过双向链表来建立连接。