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