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
评论