关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 机械/制造每日一题 #
82179次浏览 1431人参与
# 非技术2023笔面经 #
317214次浏览 2686人参与
# 机械求职避坑tips #
82701次浏览 538人参与
# 工作中,努力重要还是选择重要? #
248626次浏览 2413人参与
# 应届生,你找到工作了吗 #
97771次浏览 598人参与
# 如果秋招能重来,我会____ #
79770次浏览 471人参与
# 面试紧张时你会有什么表现? #
21211次浏览 154人参与
# 为了找工作你投递了多少公司? #
99626次浏览 685人参与
# 对2025年忏悔 #
10509次浏览 188人参与
# 春招前还要继续实习吗? #
13216次浏览 146人参与
# 每个月的工资都是怎么分配的? #
81751次浏览 665人参与
# 虾皮求职进展汇总 #
362896次浏览 2769人参与
# 影石Insta360求职进展汇总 #
169491次浏览 1345人参与
# 哪些公司笔/面试难度大? #
7523次浏览 35人参与
# AI时代,哪些岗位最容易被淘汰 #
26116次浏览 223人参与
# 你面试被问到过哪些不会的问题? #
107377次浏览 1879人参与
# 秋招被确诊为…… #
280634次浏览 1589人参与
# 大疆的机械笔试比去年难吗 #
96399次浏览 767人参与
# 电信求职进展汇总 #
36067次浏览 191人参与
# 2025秋招体验点评 #
87039次浏览 726人参与
腾讯成长空间 6006人发布