关注
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过长引起的较大拷贝开销**。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
10-18 17:30
北京工业大学 Java
天降大厂offer:想从事前端就放前端的技术栈,然后项目描述,还有项目做了什么内容,使用了什么技术解决了什么问题优化了什么性能。然后头像可以不要,在读也可以不要,还有bg的话就不要放课程,写哪个学校什么本科,还有绩点排名(如果高的话),然后就是技术栈写好一点,接下来就是项目(有实习就写实习,没有就到项目),项目放两个好一点的,自己包装一下,然后有参加什么竞赛放两个就好了,接下来就是靠你自己了,毕竟211还是很难容易找的,不像我们学院本 点赞 评论 收藏
分享
点赞 评论 收藏
分享
查看12道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 互联网行业现在还值得去吗 #
36579次浏览 261人参与
# 落户对你的求职选择影响有多大 #
29216次浏览 101人参与
# 虾皮开奖 #
42465次浏览 202人参与
# 你小时候最想从事什么职业 #
132389次浏览 1971人参与
# 第一次找实习,我建议__ #
27793次浏览 348人参与
# 非技术2024笔面经 #
435274次浏览 4881人参与
# 参加完秋招的机械人,还参加春招吗? #
80422次浏览 614人参与
# 机械人的工作环境真的很差吗 #
35751次浏览 132人参与
# 牛友的志愿填报指南 #
41580次浏览 196人参与
# 韶音科技求职进展汇总 #
62247次浏览 506人参与
# 从mentor身上学到了__ #
23442次浏览 386人参与
# 你怎么评价今年的春招? #
144129次浏览 1392人参与
# 外出实习被同学举报 #
6132次浏览 39人参与
# 除了主业以外,你还有哪些其他收入? #
36447次浏览 303人参与
# 打工人的至爽时刻or至暗时刻 #
42982次浏览 223人参与
# 材料进Fab厂真的劝退吗? #
60822次浏览 209人参与
# 你认为工作的意义是什么 #
206294次浏览 1309人参与
# 华为海思工作体验 #
36170次浏览 146人参与
# 秋招暂停,我将对以下公司做出处罚__ #
32047次浏览 147人参与
# 如果今天是你的last day,你会怎么度过? #
49849次浏览 304人参与
