关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
![](https://static.nowcoder.com/fe/file/oss/icon_job.png)
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
1335012次浏览 18740人参与
# 非技术岗薪资爆料 #
53955次浏览 732人参与
# OPPO开奖 #
59625次浏览 857人参与
# 和牛牛一起刷题打卡 #
45995次浏览 3615人参与
# 产品每日一题 #
2162次浏览 106人参与
# 互联网公司评价 #
106489次浏览 1379人参与
# 不去互联网可以去金融科技 #
47899次浏览 508人参与
# 来聊聊你目前的求职进展 #
230645次浏览 2920人参与
# 24届软开秋招面试经验大赏 #
1242384次浏览 18688人参与
# 晒一晒我的offer #
4039286次浏览 60442人参与
# 硬件兄弟们 甩出你的华为奖状 #
38177次浏览 226人参与
# 写简历别走弯路 #
361069次浏览 4549人参与
# 软件开发2024笔面经 #
1572855次浏览 36100人参与
# 华子oc时间线 #
11612次浏览 60人参与
# 如果可以选,你最想从事什么工作 #
220980次浏览 3410人参与
# 运营人的第一份offer应该如何选 #
41748次浏览 693人参与
# 参加过提前批的机械人,你们还参加秋招么 #
16908次浏览 383人参与
# 我想象的工作vs实际工作 #
117549次浏览 1816人参与
# 机械制造笔面经 #
13352次浏览 363人参与
# 百度工作体验 #
32256次浏览 317人参与
# 投递实习岗位前的准备 #
755147次浏览 13168人参与
# 国企vs私企,你更想去? #
34897次浏览 406人参与