快速列表 quicklist 了解吗?
Redis 早期版本存储 list 列表数据结构使用的是压缩列表 ziplist 和普通的双向链表 linkedlist,也就是说当元素少时使用 ziplist,当元素多时用 linkedlist。
但考虑到链表的附加空间相对较高,prev
和 next
指针就要占去 16
个字节(64 位操作系统占用 8
个字节),另外每个节点的内存都是单独分配,会家具内存的碎片化,影响内存管理效率。
后来 Redis 新版本(3.2)对列表数据结构进行了改造,使用 quicklist
代替了 ziplist
和 linkedlist
,quicklist 是综合考虑了时间效率与空间效率引入的新型数据结构。
quicklist 由 list 和 ziplist 结合而成,它是一个由 ziplist 充当节点的双向链表。
THE END
暂无评论内容