关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 实习生至暗时刻 #
6467次浏览 126人参与
# AI求职记录 #
2644次浏览 129人参与
# 神州信息求职进展汇总 #
2197次浏览 47人参与
# 交出你的校招焚诀 #
2254次浏览 53人参与
# 你见过最离谱的招聘要求是什么? #
260708次浏览 1758人参与
# 面试___岗的必刷题单 #
3799次浏览 64人参与
# 通信和硬件还有转码的必要吗 #
92792次浏览 603人参与
# 机械制造薪资爆料 #
1950469次浏览 11058人参与
# AI面试问题分享 #
5979次浏览 130人参与
# 哪些公司开暑期实习了? #
7017次浏览 59人参与
# 三月的小目标 #
3982次浏览 82人参与
# 春招开局,你有保底offer吗? #
10834次浏览 110人参与
# 实习生的生存小技巧 #
3284次浏览 74人参与
# 你经历过哪些AI幻觉? #
2235次浏览 49人参与
# 小厂一定不能去吗? #
12510次浏览 125人参与
# 找AI工作应该卷什么? #
1534次浏览 37人参与
# 薪资爆料 #
387695次浏览 2159人参与
# 面试时间长是好事吗? #
129703次浏览 742人参与
# 参加哪些竞赛对找工作有帮助? #
31260次浏览 234人参与
# 你今年的保底offer是哪家 #
172149次浏览 722人参与
# 十二月请对我好一点 #
84725次浏览 688人参与
查看16道真题和解析