关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
查看19道真题和解析 点赞 评论 收藏
分享
03-01 18:06
河北水利电力学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 三月的小目标 #
59153次浏览 862人参与
# 你上一次加班是什么时候? #
137966次浏览 763人参与
# 滴滴笔试 #
35102次浏览 200人参与
# 2025秋招体验点评 #
99966次浏览 754人参与
# 美团笔试 #
702952次浏览 4674人参与
# 你遇到过哪些神仙同事 #
133950次浏览 763人参与
# AI岗位暴涨12倍,你会转AI赛道吗? #
6257次浏览 115人参与
# 米哈游笔试 #
557936次浏览 1109人参与
# 金三银四,你的春招进行到哪个阶段了? #
18829次浏览 255人参与
# 今天你投了哪些公司? #
175032次浏览 3014人参与
# 27届实习投递记录 #
1179次浏览 24人参与
# vivo笔试 #
13265次浏览 123人参与
# 小米编程考试 #
32301次浏览 152人参与
# 你感受到金三银四了嘛? #
81353次浏览 671人参与
# 字节7000实习来了,你投了吗? #
5445次浏览 26人参与
# 虽然0面试,但今天___,夸夸自己 #
10647次浏览 193人参与
# 文科生还参加今年的春招吗 #
13791次浏览 100人参与
# 职场上哪些行为很加分? #
337424次浏览 3728人参与
# AI项目实战 #
7802次浏览 378人参与
# 实习学不到东西正常吗? #
9170次浏览 199人参与
