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;
浙公网安备 33010602011771号