列表对象的编码可以是 ziplist 或 linkedlist
ziplist 编码的列表对象使用压缩列表作为底层实现,每个压缩列表节点(entry)保存了一个列表元素,节点值可以是一个字节数组或者整数,而不是 SDS(参考压缩列表的 content 属性)
ziplist 编码的列表对象linkedlist 编码的列表对象使用双端链表作为底层实现,每个双端链表节点(node)都保存一个字符串对象,而每个字符串对象都保存了一个列表元素
linkedlist 编码的列表对象编码转换
当列表对象可以同时满足以下两个条件时,列表对象使用 ziplist 编码:
- 列表对象保存的所有字符串对象长度都小于 64 字节
- 列表对象保存的元素数量小于 512 个;不能满足这两个条件的列表对象需要使用 linkedlist 编码
以上两个条件的上限值可以被修改,由 list-max-ziplist-value 和 list-max-ziplist-entris 选项控制
当任一条件不能被满足时,对象的编码转换操作就会被执行
网友评论