压缩表的结构
zlbytes 表示整个压缩表占用的内存字节大小
zltail 指向压缩列表的尾节点的指针
zllen 压缩列表的节点数量
entryX 压缩列表的节点们
zlend 压缩列表末端的标记(压缩列表是由特殊编码的连续内存块顺序组成的)
压缩表节点的结构如下
previous_entry_length 表示前一个节点的字节长度
encoding 表示当前节点数据的编码以及数据类型和长度
content 表示存储的内容
注意:如果前一个节点的字节长度小于254个字节,那么previous_entry_length的值就会用一个字节保存
如果前一个字节的长度大于等于254个字节,那么previous_entry_length的值就会占用5个字节来保存了
遍历方式,从尾部到头部
连锁更新
因为每个节点的previous_entry_length会记录前一个节点的长度,且这个属性previous_entry_length会因为前一个节点大小的变化而变化
所以会引起连锁更新,但是因为条件苛刻,所以改了很小,所以性能问题不必太担心,几乎不会发生。