关注
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过长引起的较大拷贝开销**。
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
- 1... 28届实习拷打,一场面试,23个Agent问题1.0W
- 2... 我们为什么要做网申助手这个插件9359
- 3... 🔥牛客春招季🔥各公司春招&实习最新进展,这里实时更新!7487
- 4... 找实习两个月,工具用了一堆,最后只留下这些5615
- 5... 携程3.18Java开发一面面经5392
- 6... 字节ByteIntern剪映后端三面面经5109
- 7... 面试官视角聊聊:如何通过AI coding面试?附焚决3858
- 8... 命运换了个赛道给我发牌3760
- 9... 小红书前端日常实习二面凉经3716
- 10... 小红书暑期一面3424
正在热议
更多
# 跟HR说什么能被秒回? #
10622次浏览 183人参与
# 职能管理面试记录 #
9347次浏览 45人参与
# 巨人网络春招 #
10325次浏览 164人参与
# 春招/暑实第一面是哪家? #
21773次浏览 241人参与
# OPPO求职进展汇总 #
790388次浏览 5420人参与
# 你收到了哪些公司的笔试? #
19819次浏览 112人参与
# MiniMax求职进展汇总 #
16299次浏览 243人参与
# 正在春招的你,也参与了去年秋招吗? #
359495次浏览 2612人参与
# 一人说一个提前实习的好处 #
115340次浏览 704人参与
# 京东美团大战,你怎么看? #
174494次浏览 883人参与
# 京东开奖 #
673852次浏览 3238人参与
# 如何一边实习一边找下家? #
34287次浏览 247人参与
# 面试官最爱问的 AI 问题是...... #
18220次浏览 615人参与
# 你的嫡系AI是哪个? #
4926次浏览 119人参与
# 现在入门AI应该走哪些方向? #
4961次浏览 101人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
3447次浏览 95人参与
# 想给25届机械人的秋招建议 #
46232次浏览 247人参与
# 26届秋招公司红黑榜 #
80465次浏览 280人参与
# 阿里巴巴工作体验 #
27050次浏览 61人参与
# 实习生如何通过转正 #
130135次浏览 1477人参与
# 巨人网络工作体验 #
74287次浏览 505人参与
# 巨人网络求职进展汇总 #
190825次浏览 1228人参与