Redis源码剖析——列表对象

列表对象

列表对象的编码为ziplist或linkedlist

ziplist编码的列表对象

当满足下面两个条件时列表对象用ziplist编码
1. 列表对象保存的所有字符串元素的长度都小于等于64字节
2. 元素数量小于等于512
当执行RPUSH numbers 1 “three” 5 命令后numbers键的值对象的布局如下
Redis源码剖析——列表对象

linkedlist编码的列表对象

当不符合ziplist编码的两个条件时,会使用linkedlist
如执行命令RPUSH test “kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk”后(65个k)
test键的值对象的布局如图,将采用linkedlist编码
Redis源码剖析——列表对象