关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
牛客热帖
正在热议
# 25届秋招总结 #
249081次浏览 2021人参与
# 学历or实习经历,哪个更重要 #
41168次浏览 300人参与
# 北方华创开奖 #
22898次浏览 259人参与
# 地方国企笔面经互助 #
2579次浏览 6人参与
# 你最想要的公司福利是? #
40159次浏览 126人参与
# 选完offer后,你后悔学本专业吗 #
10754次浏览 77人参与
# 面试题刺客退退退 #
137270次浏览 2092人参与
# 国企/银行/研究所公司爆料 #
89770次浏览 412人参与
# 应届生被毁约被毁意向了怎么办 #
27213次浏览 238人参与
# 一觉醒来,我觉醒了超级打工人系统 #
2927次浏览 35人参与
# 机械应届生薪资要多少才合适? #
12400次浏览 60人参与
# 查收我的offer竞争力报告 #
16916次浏览 229人参与
# 校招入职后的感受 #
157003次浏览 1961人参与
# 你觉得第一学历对求职有影响吗? #
14904次浏览 121人参与
# 没有实习经历,还有机会进大厂吗 #
805229次浏览 13815人参与
# 我的工作日记 #
21245次浏览 271人参与
# 不给转正的实习,你还去吗 #
1517219次浏览 16971人参与
# 寒假躺平还是提前实习 #
58483次浏览 438人参与
# 总结:哪家公司面试体验感最差 #
25788次浏览 129人参与
# 秋招OC许愿 #
226778次浏览 1873人参与
# 如何写一份好简历 #
602441次浏览 8445人参与