rpush lst 1 2 3
object encoding lst #ziplist
rpush lst '11111122222333334444455555666667777788888999990000011111222223333'
object encoding lst #就是linkedlist了
robj *createZiplistObject(void) {
unsigned char *zl = ziplistNew(); //ziplist.c创建压缩链表底层数据结构
robj *o = createObject(REDIS_LIST,zl); //以压缩链表数据结构作为参数,创建链表对象
o->encoding = REDIS_ENCODING_ZIPLIST; //指定编码
return o;
}
robj *createListObject(void) {
list *l = listCreate(); //adlist.c中创建双端链表底层数据结构
robj *o = createObject(REDIS_LIST,l); //传入双端链表底层数据结构,创建列表对象
listSetFreeMethod(l,decrRefCountVoid); //为双端链表底层数据结构,设置释放的方法
o->encoding = REDIS_ENCODING_LINKEDLIST; //指定编码
return o;
}