Redis的List类型可以从首、尾操作列表中的元素:

哪一个数据结构能满足上述特征?
Redis的List结构类似一个双端链表,可以从首、尾操作列表中的元素:

List的put方法他们都调用了pushGenericCommand

查看pushGenericCommand方法

然后再点createQuicklistObject方法看看他是怎么创建QuickList的

这里可以看到OBJ_LIST(数据类型)和l(数据体)两个参数,查看Object的创建方法

他把raw数据类型赋值给了object对象,然后再返回上一级方法进行重置,重置为OBJ_ENCODING_QUICKLIST
创建完成最后返回上面的pushGenericCommand方法,由于quickList里有zipList所以需要限制ziplist的大小,不能超过8kb,设置zipList的压缩深度(247行quicklistSetOptions方法)
最后可以用一张图来表示redis中的List

评论