关注
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值得去吗? #
3670次浏览 68人参与
# 你实习是赚钱了还是亏钱了? #
119443次浏览 660人参与
# 联宝杯大学生创新大赛,你的技术值得产业级答案 #
43518次浏览 498人参与
# 你会因为行情,降低找工作标准吗? #
13457次浏览 148人参与
# 机械人晒出你的简历 #
191516次浏览 1103人参与
# 如果春招能重来,我会___ #
6535次浏览 75人参与
# 实习想申请秋招offer,能不能argue薪资 #
256053次浏览 1333人参与
# 刚入职的你踩过哪些坑 #
60107次浏览 417人参与
# 腾讯云智研发工作体验 #
43437次浏览 177人参与
# 招银网络求职进展汇总 #
249994次浏览 1121人参与
# 面试官拷打AI项目都会问什么? #
2751次浏览 148人参与
# 想做Agent可以做哪些岗位? #
3271次浏览 44人参与
# 你觉得最好用的AI编程工具是_ #
1360次浏览 35人参与
# 除了线上,还能去哪些地方投简历 #
4280次浏览 47人参与
# 求职你最看重什么? #
166382次浏览 907人参与
# 你的秋招白月光和意难平公司 #
98292次浏览 350人参与
# 实习第一天,你在干什么 #
4715次浏览 41人参与
# 暑假倒计时,你都干了些啥? #
58945次浏览 314人参与
# 如何一边实习一边秋招 #
2235700次浏览 19228人参与
# 如何排解工作中的焦虑 #
330442次浏览 2831人参与
# 你和你的mentor相处模式是__ #
6818次浏览 62人参与
