关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 设计人如何选offer #
97952次浏览 680人参与
# 找工作,行业重要还是岗位重要? #
7028次浏览 88人参与
# 五一之后,实习真的很难找吗? #
44717次浏览 313人参与
# 盲审过后你想做什么? #
12386次浏览 110人参与
# 外包能不能当跳板? #
22063次浏览 191人参与
# 领导秒批的请假话术 #
9717次浏览 74人参与
# 考研可以缓解求职焦虑吗 #
20640次浏览 244人参与
# 五一假期,你打算“躺”还是“卷”? #
26980次浏览 408人参与
# 面试等了一周没回复,还有戏吗 #
115312次浏览 1072人参与
# 找工作前vs找工作后的心路变化 #
7140次浏览 64人参与
# 牛友们的论文几号送审 #
27168次浏览 623人参与
# 你喜欢工作还是上学 #
37399次浏览 409人参与
# 应届生薪资多少才合理? #
3061次浏览 24人参与
# 写简历别走弯路 #
714192次浏览 7850人参与
# 如果有时光机,你最想去到哪个年纪? #
43227次浏览 766人参与
# 如何缓解入职前的焦虑 #
171779次浏览 1267人参与
# 每人推荐一个小而美的高薪公司 #
72826次浏览 1357人参与
# 硬件人,你被哪些公司给挂了 #
46522次浏览 720人参与
# 如果不工作真的会快乐吗 #
101027次浏览 866人参与
# 大疆的机械笔试比去年难吗 #
69572次浏览 602人参与