数据库
首页 > 数据库> > 【redis前传】集思广益之quicklist,取其精华去其糟粕

【redis前传】集思广益之quicklist,取其精华去其糟粕

作者:互联网

前言

image-20210715191310177

结构演变

linkedList

image-20210723133046693

C++指针

过渡原因

image-20210723133853290

ziplist

image-20210723134013816

linkedlist+ziplist好处

image-20210723134105776

quicklist引入

庐山真面目

quicklist

image-20210723134438938

image-20210723134617683

image-20210723134817146

image-20210723134859582

quicklistNode

image-20210723135204092

image-20210723135327554

image-20210723135734482

insert

属性值 作用
-1 每个quicklistNode节点的ziplist所占字节数不能超过4kb
-2 每个quicklistNode节点的ziplist所占字节数不能超过8kb
-3 每个quicklistNode节点的ziplist所占字节数不能超过16kb
-4 每个quicklistNode节点的ziplist所占字节数不能超过32kb
-5 每个quicklistNode节点的ziplist所占字节数不能超过64kb
int ziplist包含的entry上限

两端插入

image-20210723140744723

image-20210723141323765

image-20210723141540152

中间插入

st=>start: Insert
ziplistInsert=>operation: 向ziplist中插入
subziplistInsert=>operation: 将该ziplist拆分两个ziplist, 在对应位置加入
insertNear=>operation: 插入相邻的ziplist中
newZipInsert=>operation: 新建ziplist插入
cond=>condition: ziplist是否可以容纳
headtailCond=>condition: 插入位置在ziplist两端
nearheadtailCond=>condition: 相邻ziplist是否可以容纳
e=>end: 快乐的一天

st->cond
cond(yes)->ziplistInsert
cond(no)->headtailCond(yes)->nearheadtailCond
headtailCond(no)->subziplistInsert
nearheadtailCond(yes)->insertNear
nearheadtailCond(no)->newZipInsert

总结

image-20210723144626592

参考文献

lzf压缩算法

标签:前传,取其精华,ziplist,redis,我们,链表,节点,quicklist
来源: https://www.cnblogs.com/zhangxinhua/p/15318683.html