关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
02-25 16:17
门头沟学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招/暑实第一面是哪家? #
6084次浏览 96人参与
# 面试官最爱问的 AI 问题是...... #
4516次浏览 170人参与
# 如何一边实习一边找下家? #
4181次浏览 53人参与
# 面试官问过你最刁钻的问题是什么? #
75196次浏览 465人参与
# 你收到了哪些公司的笔试? #
7078次浏览 35人参与
# 机械制造面试点评 #
90346次浏览 482人参与
# 跟HR说什么能被秒回? #
2589次浏览 48人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
475次浏览 19人参与
# 你的嫡系AI是哪个? #
1192次浏览 39人参与
# 你现在的工作,是“成长”还是“消耗”? #
4814次浏览 78人参与
# 现在入门AI应该走哪些方向? #
1166次浏览 32人参与
# 你认为小厂实习有用吗? #
128168次浏览 707人参与
# 找不到好工作选择GAP真的丢人吗 #
102470次浏览 1020人参与
# 如何排解工作中的焦虑 #
282555次浏览 2551人参与
# 上班到公司第一件事做什么? #
150197次浏览 1055人参与
# 淘天集团工作体验 #
12695次浏览 59人参与
# 机械人选offer,最看重什么? #
165824次浏览 810人参与
# 金三银四,你的春招进行到哪个阶段了? #
19666次浏览 266人参与
# 追觅科技求职进展汇总 #
35817次浏览 190人参与
# 滴滴笔试 #
38867次浏览 215人参与
查看29道真题和解析