Redis的quicklist vs ziplist

    ziplist是压缩列表,是list和hash的底层实现。

    ziplist

    是redis为节约内存占用而设计的一种线性数据结构

  1. zlbytes:记录整个ziplist占用的内存数
  2. zltail:记录压缩列表尾节点和起始地址有多少字节数,通过这个偏移量,不用逐个遍历,就可以获取尾节点的位置
  3. zllen:记录压缩列表中含有的节点数
  4. zlend:特殊标记,0xFF用于标记压缩列表的末端

    压缩列表的各个节点组成,如下,previous_entry_length是前一个节点的长度,用于从后向前遍历,encoding里面存储当前节点的长度的数据类型,content是实际存储数据的部分

 

    quicklist

    ziplist是内存紧凑型存储,但由于使用一维线性数据结构,当数据量大时,更新时内存重新分配,会涉及大数据量的迁移,所以quicklist用ziplist组成双向列表,列表中的每个节点都是ziplist

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章