关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
05-11 10:48
门头沟学院 测试工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的求职总结 #
474760次浏览 6733人参与
# 跟HR说什么能被秒回? #
46218次浏览 330人参与
# 总结:offer选择,我是怎么选的 #
296253次浏览 1583人参与
# 你有哪些缓解焦虑的方法? #
62832次浏览 922人参与
# 拼多多工作体验 #
60774次浏览 426人参与
# 得物app工作体验 #
66887次浏览 117人参与
# 聊聊这家公司值得去吗 #
962524次浏览 4781人参与
# 小厂实习有必要去吗 #
93644次浏览 443人参与
# 你后悔自己读研吗? #
65499次浏览 332人参与
# 应届生应该先就业还是先择业 #
200435次浏览 942人参与
# 产品薪资爆料 #
181333次浏览 867人参与
# 这些公司卡简历很严格 #
106733次浏览 469人参与
# AI让海力士市值突破9000亿美元 #
8282次浏览 100人参与
# 你找工作的时候用AI吗? #
211753次浏览 1027人参与
# 你的秋招第一场笔试是哪家 #
339780次浏览 2203人参与
# 重来一次,我还会选择这个专业吗 #
469927次浏览 4001人参与
# 通信硬件2024笔试面试经验 #
297763次浏览 2095人参与
# 在国企工作的人,躺平了吗? #
427397次浏览 3993人参与
# 携程求职进展汇总 #
965038次浏览 6248人参与
# 牛油的搬砖plog #
204453次浏览 1322人参与
