关注
Q3:
我们都知道Redis里面除了有链表,字典,跳表,还有压缩列表,请你简单介绍一下压缩列表的结构,然后解释一下压缩列表中的连锁更新问题。
A:
之所以叫压缩列表是因为没有指针参与的原因,结构大概是`zlbytes、 zltail、zllen、entrys、zlend`这几个构成,然后zlbytes是整个压缩列表的总字节数. 其中的entrys里面记录着所有的内容,但是因为没有指针,所以就在每个entry上添加了一个`pre_entry`用来记录上一个entry项的长度,用于遍历。
而且这里的pre_entry不是固定大小,如果前一个项大于254字节,它就会变成5个字节,其中第一个字节为0xEF,剩下4个字节则用于保存长度,这样就会导致一个问题,比如新增加一个大于254的节点,但是表头的pre_entry是1个字节,然后将其进行扩容,这样就会导致**后面的每个项都需要移位**,另外,如果这个表项修改完之后变成了大于254字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 牛客新年AI问运 #
5890次浏览 92人参与
# 工作中的卑微时刻 #
33375次浏览 199人参与
# 牛客AI体验站 #
16143次浏览 283人参与
# 多益网络工作体验 #
63102次浏览 306人参与
# 正在实习的碎碎念 #
1644580次浏览 13716人参与
# 有必要和同事成为好朋友吗? #
844次浏览 17人参与
# 面试中的破防瞬间 #
1189930次浏览 11026人参与
# 滴!实习打卡 #
786343次浏览 6841人参与
# 秋招吐槽大会 #
304132次浏览 1523人参与
# 工作一周年分享 #
52280次浏览 274人参与
# 机械人的薪资开到多少,才适合去? #
164970次浏览 571人参与
# 你最满意的offer薪资是哪家公司? #
71321次浏览 353人参与
# 大学最后一个寒假,我想…… #
89191次浏览 809人参与
# 哪些公司真双非友好? #
62799次浏览 268人参与
# OC/开奖 #
411164次浏览 2282人参与
# 如果可以选,你最想从事什么工作 #
721721次浏览 4870人参与
# 如何提高实习转正率? #
86426次浏览 504人参与
# 如何确定求职岗位 #
723360次浏览 6427人参与
# 面试线索爆料 #
108599次浏览 641人参与
# 我们是不是被“优绩主义”绑架了? #
32553次浏览 485人参与

查看4道真题和解析