Redis ziplist源码解析

ziplist 数据结构在内存中的是一块连续的内存空间。这块空间的起始部分是大小固定的 10 字节元数据,其中记录了 ziplist 的总字节数、最后一个元素的偏移量以及列表元素的数量,而这 10 字节后面的内存空间则保存了实际的列表数据。在 ziplist 的最后部分,是一个 1 字节的标识(固定为 255),用来表示 ziplist 的结束 。
存在着两个问题,查找性能差和连锁更新性能问题。
查找性能差:查找一块连续内存区域,当储存的元素过多时,需要从头到尾去遍历,性能自然低下。
连锁更新性能:更新或者删除某元素时,需要重新计算所需空间大小并且重新分配所需要的空间,性能肯定是不行的。