关注
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字节,就会后面的同样需要更新,依此类推,**就会导致连锁更新问题**。但是看书上给出的答案就发现连锁更新不会造成很严重的性能问题:**因为多个连续的临界表项才会可能被引发,对于少量节点的更新并不会影响性能**。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 腾讯音乐求职进展汇总 #
57239次浏览 343人参与
# 你的秋招第一面感觉怎么样 #
61503次浏览 500人参与
# 牛友故事会 #
317740次浏览 8618人参与
# 互联网公司评价 #
348963次浏览 3630人参与
# 互联网回暖,腾讯要招5000+人! #
259126次浏览 4875人参与
# 怎么防止在试用期被辞退 #
110321次浏览 849人参与
# 秋招投简历越早越好吗 #
61094次浏览 605人参与
# 百度工作体验 #
188420次浏览 1845人参与
# 国企vs私企,怎么选? #
18190次浏览 157人参与
# 我在牛爱网找对象 #
161557次浏览 1224人参与
# 盲审过后你想做什么? #
9754次浏览 93人参与
# 面试等了一周没回复,还有戏吗 #
101338次浏览 938人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
89806次浏览 670人参与
# 聊聊这家公司值得去吗 #
195545次浏览 2061人参与
# 职业发展规划如何回答 #
29652次浏览 167人参与
# 没有实习经历还能找到好工作吗? #
6857次浏览 38人参与
# 25届网易互娱暑实进度 #
63028次浏览 603人参与
# 你认为工作的意义是什么 #
120183次浏览 909人参与
# 实习要如何选择和准备? #
20280次浏览 374人参与
# 你的办公桌上都有什么? #
3634次浏览 29人参与