1.quckList
由于压缩链表存在级联更新的问题,所以redis在3.2的时候优化了这个问题。
结构图
由图可以看出,quickList的结构其实是把压缩链表和双向链表合并起来了。通过减小quickListNode的大小来降低级联更新的问题,本质上还是没有级联更新的问题,因为数据结构使用的还是压缩链表
2.listPack
redis在5.0版本的时候彻底优化了压缩链表。取而代之的是listPack。
结构图
最大的区别是len的长度不在记录前一个节点的大小,而是只记录当前entry的wncoding+data的长度。