首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
listpack专题
Redis quicklist源码+listpack源码(5.0版本以上的优化)
ziplist设计上的问题,每一次增删改都需要计算前面元素的空间和长度(prevlen),这种设计缺陷非常明显,因此引入了quicklist的设计。 quicklist quicklist实际就是双端链表,链表里的每一个节点都是ziplist,这样就可以避免减少了数据插入时内存空间的重新分配,以及内存数据的拷贝。同时每一个节点都会限制ziplist的大小,如果ziplist里面插入的entry
阅读更多...
Redis哈希对象(listpack介绍)
哈希对象的编码可以是ziplist或者hashtable。再redis5.0版本之后出现listpack,为了是代替ziplist。 一. 使用ziplist编码 ziplist编码的哈希对象使用压缩列表作为底层实现,每当有新的键值对要加入到哈希对象时,程序都会先将保存了键值对的键的压缩列表节点推入到压缩列表表尾,再将保存了值的压缩列表节点推入到压缩列表表尾。
阅读更多...
Redis数据结构七之listpack和quicklist
本文首发于公众号:Hunter后端 原文链接:Redis数据结构七之listpack和quicklist 本篇笔记介绍 listpack 和 quicklist 两种结构 按照顺序,本来应该先介绍 quicklist 的结构,quicklist 在 7.0 之前的版本是由双向链表和压缩列表构成的,但是在 7.0 版本已经变成了由双向链表和 listpack 实现,所以在这里我们先介绍一下
阅读更多...