关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
04-20 17:30
天津职业技术师范大学 嵌入式软件工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 26届春招投递记录 #
30561次浏览 223人参与
# 妈妈治愈了你哪些脆皮时刻 #
47137次浏览 355人参与
# 27届实习投递记录 #
110564次浏览 1087人参与
# 我的工作日记 #
207449次浏览 1821人参与
# 我的求职总结 #
509816次浏览 7060人参与
# 大学生该如何认清当下的就业环境? #
178318次浏览 939人参与
# 要毕业了,再不说就来不及了 #
4916次浏览 89人参与
# AI面会问哪些问题? #
133041次浏览 3321人参与
# 今年秋招还有金九银十吗 #
84894次浏览 518人参与
# 25届非技术实习投递记录 #
159224次浏览 1027人参与
# 我与AI的日常 #
10187次浏览 155人参与
# 如果公司降薪,你会跳槽吗? #
168574次浏览 968人参与
# 你的秋招进行到哪一步了 #
2801835次浏览 23414人参与
# 你觉得什么岗位会被AI替代 #
65199次浏览 386人参与
# 你以为的实习VS真实的实习 #
144006次浏览 760人参与
# 腾讯工作体验 #
646044次浏览 3912人参与
# 怎么给家人解释你的工作? #
60390次浏览 224人参与
# 摸鱼被leader发现了怎么办 #
207079次浏览 937人参与
# 滴!实习打卡 #
860794次浏览 6902人参与
# 秋招开始捡漏了吗 #
249080次浏览 1063人参与