关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
03-16 16:31
湖南工商大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 有哪些公司在面试时考察AICoding? #
8854次浏览 184人参与
# 你认为小厂实习有用吗? #
137530次浏览 745人参与
# 厦门银行科技岗值不值得投 #
23745次浏览 500人参与
# HR面都在聊什么? #
7118次浏览 87人参与
# 如何快速融入团队? #
47857次浏览 299人参与
# 父母问你工作找得怎么样,怎么回 #
15473次浏览 193人参与
# AI“智障”时刻 #
34953次浏览 155人参与
# 找工作如何保持松弛感? #
136910次浏览 1469人参与
# AI时代还有必要刷leetcode吗? #
5728次浏览 97人参与
# 想从事Agent应该学习哪些技术? #
3972次浏览 131人参与
# 那些我实习了才知道的事 #
286766次浏览 1810人参与
# 什么人最适合大厂? #
8064次浏览 82人参与
# 哪些公司面试还在问八股? #
8207次浏览 83人参与
# 从投递到OC,你用了多久 #
14636次浏览 132人参与
# 顺丰求职进展汇总 #
84402次浏览 362人参与
# 查收我的offer竞争力报告 #
292574次浏览 1738人参与
# 如果没找到工作,考公是你的退路吗 #
70569次浏览 458人参与
# 双非本科的出路是什么? #
227640次浏览 1651人参与
# 哪一刻你突然觉得实习“有点值了” #
8870次浏览 71人参与
# 我的求职进度条 #
1033615次浏览 7090人参与
# 秋招踩过的“雷”,希望你别再踩 #
196184次浏览 1752人参与
查看23道真题和解析
