ziplist的结构如下:

<zlbytes><zltail><zllen><entry><entry><zlend>

bytes: 整个ziplist的大小。

tail:tail节点的偏移。

len:节点的个数。

entry:节点。

end:结束字节。

其中,有结构体如下:

typedef struct zlentry {
  unsigned int prevrawlensize, prevrawlen;
  unsigned int lensize, len;
  unsigned int headersize;
  unsigned char encoding;
  unsigned char *p;
} zlentry;

之前错误以为,这就是ziplist节点的结构类型,实质上该结构体是用来描述entry信息的。

entry的结构仍然是:previous_entry_lenth, encoding, content

从previous_entry_lenth属性中,可以提取出prevrawlensize, prevrawlen;

从encoding属性中,可以提取出lensize, len;

 

posted on 2017-04-06 13:45  偶尔发呆  阅读(339)  评论(0)    收藏  举报