redis listpack
2020-02-27 12:49:47 0 举报
redis ziplist
作者其他创作
大纲/内容
1. listpack空间利用率上更好,减少了zltail,直接通过tot-bytes就 能定位到最后的元素,再加上entry len既能实现向前遍历2.去掉了prevrawlen,也即去掉了级联的影响,自己管理自己的属性。即更改了自己的data,相关改变不会去影响到别人修改
ziplist
end
data
zlend
entry
nums
Entry
data:存储真正的数据;可能是字符串,也可能是二进制数,也可能是空的
len
listpack
Entry内部结构
len:表示整个entry的长度,包含encoding+data;主要是用来进行反向遍历使用的;是可变长度,每个字节只能使用7个bit,即127;因为0xFF已经被end占用
tot-bytes:表示listpack的总长度。总共4个字节的无符号整形,通过这个可以直接定位到最后的end
...
zllen
end: 表示listpack的结束符:0XFF,这里255占用,所以其他的域不能出现255数值
tot-bytes
encoding:表示data的存储编码类型以及data的长度,主要是为了向后遍历使用
encoding:(根据第一个字节,分9种情况,基本和ziplist差不多)
zltail
encoding
prevrawlen
zlbytes
0 条评论
回复 删除
下一页