关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 你感受到金三银四了嘛? #
29891次浏览 315人参与
# 25届网易互娱暑实进度 #
99009次浏览 768人参与
# 今天你投了哪些公司? #
51563次浏览 1107人参与
# 26届的你们有几段实习? #
169841次浏览 1099人参与
# 春招 / 实习投递,你最焦虑的一件事 #
28801次浏览 644人参与
# 米哈游笔试 #
537548次浏览 981人参与
# Tplink求职进展汇总 #
206233次浏览 948人参与
# 虽然0面试,但今天___,夸夸自己 #
2491次浏览 74人参与
# AI项目实战 #
2592次浏览 122人参与
# 为了实习逃课值吗? #
69036次浏览 536人参与
# 如果给AI员工评绩效,我的答案是…… #
4115次浏览 98人参与
# HR问:你期望的薪资是多少?如何回答 #
82846次浏览 711人参与
# 今年找实习到底有多难? #
8868次浏览 95人参与
# 27届求职交流 #
42090次浏览 858人参与
# 大城市找工作会更容易吗 #
61945次浏览 390人参与
# 哪一刻你对工作祛魅了? #
9343次浏览 102人参与
# 找工作,你都让AI帮你做什么? #
2583次浏览 104人参与
# AI时代下,你的岗位要求有什么变化? #
4586次浏览 99人参与
# 26届求职交流 #
21689次浏览 536人参与
# 签约/解约注意事项 #
887103次浏览 4713人参与
