如何5分钟内掌握Redis快速列表(quicklist)的内部机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1371个文字,预计阅读时间需要6分钟。
快速列表简介:在Redis 3.2版本之前,存储列表(list)数据结构使用的有两种数据结构:压缩列表(ziplist)和链表(linkedlist)。当列表元素个数较少且每个元素占用的空间较小时,使用压缩列表。
快速列表简介在Redis3 .2版本之前,存储列表(list)数据结构使用的是压缩列表(ziplist)和链表(linkedlist),当列表元素个数比较少并且每个元素占用空间比较小的时候,使用压缩列表。当列表元素个数比较多或者某个元素占用空间比较大的时候,使用链表。
考虑到链表的附加空间相对太高,结点的内存也是单独分配的,影响内存管理效率。在Redis3 .2版本开始对列表数据结构进行了改造,使用快速列表(quicklist)代替了压缩列表(ziplist)和链表(linkedlist)。
快速列表(quicklist)是以压缩列表(ziplist)为节点的链表(linkedlist),将链表按段切分,每一段使用压缩列表进行内存的连续存储,多个压缩列表通过prev和next指针组成的双向链表。它结合了压缩列表和链表的优势,进一步压缩了内存的使用量,进一步提高了效率。
下面我们了解一下快速列表的具体实现。
快速列表的实现在Redis中的快速列表是由quicklist结构表示的,quicklist结构包含由多个快速列表结点组成的双向链表,每一个快速列表结点都保存了一个压缩列表。下面我们一个一个地详细了解一下。
本文共计1371个文字,预计阅读时间需要6分钟。
快速列表简介:在Redis 3.2版本之前,存储列表(list)数据结构使用的有两种数据结构:压缩列表(ziplist)和链表(linkedlist)。当列表元素个数较少且每个元素占用的空间较小时,使用压缩列表。
快速列表简介在Redis3 .2版本之前,存储列表(list)数据结构使用的是压缩列表(ziplist)和链表(linkedlist),当列表元素个数比较少并且每个元素占用空间比较小的时候,使用压缩列表。当列表元素个数比较多或者某个元素占用空间比较大的时候,使用链表。
考虑到链表的附加空间相对太高,结点的内存也是单独分配的,影响内存管理效率。在Redis3 .2版本开始对列表数据结构进行了改造,使用快速列表(quicklist)代替了压缩列表(ziplist)和链表(linkedlist)。
快速列表(quicklist)是以压缩列表(ziplist)为节点的链表(linkedlist),将链表按段切分,每一段使用压缩列表进行内存的连续存储,多个压缩列表通过prev和next指针组成的双向链表。它结合了压缩列表和链表的优势,进一步压缩了内存的使用量,进一步提高了效率。
下面我们了解一下快速列表的具体实现。
快速列表的实现在Redis中的快速列表是由quicklist结构表示的,quicklist结构包含由多个快速列表结点组成的双向链表,每一个快速列表结点都保存了一个压缩列表。下面我们一个一个地详细了解一下。

