关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 从顶到拉给所有面过的公司评分 #
26276次浏览 213人参与
# 校招笔试 #
1809次浏览 40人参与
# 为了求职,我做过的疯狂伪装 #
14352次浏览 297人参与
# 晒晒你的中秋福利 #
16114次浏览 121人参与
# 职场破冰,你们都聊什么? #
8470次浏览 80人参与
# bilibili求职进展汇总 #
92864次浏览 831人参与
# 工作压力大怎么缓解 #
105869次浏览 1053人参与
# 你面试被问到过哪些不会的问题? #
24761次浏览 868人参与
# 机械笔面试考察这些知识点 #
11072次浏览 96人参与
# 聊聊这家公司值得去吗 #
562660次浏览 3725人参与
# 秋招的嫡长offer #
35707次浏览 318人参与
# 电网笔面经互助 #
47369次浏览 431人参与
# 秋招报数:你投了多少家公司? #
31744次浏览 325人参与
# 你的公司给实习生发中秋礼物吗 #
2782次浏览 32人参与
# 百度秋招提前批进度 #
152284次浏览 1778人参与
# 上班摸鱼,你都在干些什么? #
7693次浏览 125人参与
# 宣讲会你有哪些意向不到的收获 #
2173次浏览 24人参与
# 大家实习每天都在干啥 #
89714次浏览 518人参与
# 机械人春招想让哪家公司来捞你? #
358072次浏览 3112人参与
# 广联达求职进展汇总 #
11655次浏览 50人参与