七叶笔记 » 数据库 » Redis数组和链表深入详解

Redis数组和链表深入详解

介绍:

quicklist是一个双向链表,并且是一个ziplist的双向链表,ziplist本身是一个维持数据项先后顺序的列表,而且数据项保存在一个连续的内存块种。

3、对比

3.1、双向链表

双端链表便于在表的两端进行push和pop操作,但是它的内存开销比较大。 双端链表每个节点上除了要保存的数据之外,还要额外保存两个指针。 双端链表的各个节点是单独的内存块,地址不连续,节点多了容易产生内存碎片。

3.2、压缩列表

ziplist由于是一块连续的内存,所以存储效率很高。 ziplist不利于修改操作,每次数据变动都会引发一次内存的realloc。 当ziplist长度很长的时候,一次realloc可能会导致大批量的数据拷贝,进一步降低性能。

3.3、quicklist链表

空间效率和时间效率的折中。 结合了双端链表和压缩列表的优点。 4、总结

在redis 3.2版本之前使用的是 双向链表和压缩链表 两种,因为双向链表占用的内存要比压缩链表高,所以创建链表时首先会创建压缩链表,在合适的时机会转化成双向链表。redis 3.2之后使用的是quicklist链表。

到此这篇关于Redis数组和链表深入详解的文章就介绍到这了,更多相关Redis数组和链表内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章