关注
Q5:
我们都知道Redis中有一个数据结构是列表,它的实现方式很特殊,在3.2版本之前使用的是ziplist或者linkedlist而在3.2之后则实现了统一的quicklist,你可以讲一下为什么要这么做吗?
A:
Redis的列表对象,在3.2版本之前使用的是ziplist+linkedlist实现,其中在列表对象元素比较少或者元素长度比较小的时候使用ziplist来进行存储,这样可以很方便的进行存取在一段连续的内存上,不容易产生内存碎片,内存利用率高,但是插入和删除操作需要频繁的申请和释放内存, 同时会发生内存拷贝,数据量大时内存拷贝开销较大;而这时就可以采用linkedlist来进行存取(**规定单个元素超过64字节或者列表元素数量超过512个就进行转换**),采用双端链表进行,虽然每个节点是单独的内存块,地址不连续,节点多了容易产生内存碎片,但是插入,删除节点复杂度很低。
而在3.2版本之后,使用一种新的编码形式,quicklist,结合linkedlist与ziplist来实现,即实现了空间和时间的折中方案:**第一层结构用双向链表实现,每一个node都有前后指针,list则拥有一个head和tail,然后每一个node则是由一个ziplist构成,这样就保证了可以一直利用ziplist的优势,并且避免ziplist过长引起的较大拷贝开销**。
查看原帖
点赞 评论
相关推荐
刷牛客的我很豁达:包银行的兄弟,如果你想卷那就途虎,但是途虎也不是啥好平台,跳槽可能有压力,至于证券算了吧,等湾湾回来或者美元爆炸,证券类不裁员就见鬼了,更何况是本来就末尾淘汰。综上卷就去途虎,不卷就银行 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 为了去实习,我赌上了___ #
18496次浏览 195人参与
# 摸鱼被leader发现了怎么办 #
70595次浏览 407人参与
# 百融云创求职进展汇总 #
147次浏览 0人参与
# uu们,春招你还来吗? #
10592次浏览 76人参与
# 2025年终总结 #
11213次浏览 196人参与
# 十二月请对我好一点 #
23422次浏览 325人参与
# 父母对你找工作是助力还是阻力? #
12533次浏览 192人参与
# 如果可以,你希望哪个公司来捞你 #
154636次浏览 650人参与
# 降低公积金和取消房补怎么选 #
23296次浏览 78人参与
# 工作中哪个瞬间让你想离职 #
109263次浏览 771人参与
# 哪一瞬间让你觉得“这班不如不上” #
10112次浏览 142人参与
# 高薪高压 vs 低薪wlb,你怎么选? #
9837次浏览 108人参与
# 一人推荐一个值得做的项目 #
8271次浏览 113人参与
# 运营每日一题 #
112588次浏览 885人参与
# 第一份工作能做外包吗? #
85691次浏览 574人参与
# 这些公司卡简历很严格 #
80177次浏览 366人参与
# 硬件人的简历怎么写 #
317035次浏览 3063人参与
# 工作前VS工作后,你的心态变化 #
12275次浏览 150人参与
# 学历or实习经历,哪个更重要 #
201776次浏览 1068人参与
# 秋招提前批启动你开冲了吗 #
160649次浏览 2244人参与
# 工作中出现了XX情况正常吗 #
30069次浏览 208人参与
