关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 有转正机会的小厂实习值得去吗? #
1643次浏览 28人参与
# 金三银四,你有感觉到吗 #
686120次浏览 6059人参与
# 你最讨厌面试被问什么 #
2685次浏览 36人参与
# 哪些公司开春招了? #
27665次浏览 187人参与
# 牛友的春节生活 #
31769次浏览 368人参与
# 毕业季等于分手季吗 #
54138次浏览 648人参与
# 2024开工大吉 #
26620次浏览 99人参与
# 牛客租房专区 #
155545次浏览 1692人参与
# 你的秋招第一场笔试是哪家 #
291593次浏览 2082人参与
# 实习越久越好,还是多多益善? #
77820次浏览 343人参与
# 26届的你,投了哪些公司? #
256166次浏览 1685人参与
# 文科生还参加今年的春招吗 #
12901次浏览 98人参与
# 如何缓解入职前的焦虑 #
260468次浏览 1463人参与
# 找实习多的是你不知道的事 #
1804830次浏览 20687人参与
# 大家每天通勤多久? #
85141次浏览 772人参与
# 职场吐槽大会 #
326830次浏览 2252人参与
# 记录实习开销 #
186187次浏览 907人参与
# 正在实习的你,几点下班 #
298608次浏览 2146人参与
# 运营面经 #
157817次浏览 1346人参与
# 牛友们,签完三方你在忙什么? #
137777次浏览 1000人参与

