教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

Redis中list底层的实现方式与区别

更新时间:2021年04月02日16时37分 来源:传智教育

传智教育-一样的教育,不一样的品质

(1)问题分析
考官主要想考察应聘者对Redis数据的理解和拓展,有没有深入的去理解过数据库。
(2)核心问题讲解
列表对象的编码可以是ziplist或者linkedlist。
ziplist是一种压缩链表,它的好处是更能节省内存空间,因为它所存储的内容都是在连续的内存区域当中的。当列表对象元素不大,每个元素也不大的时候,就采用ziplist存储。但当数据量过大时就ziplist就不是那么好用了。因为为了保证他存储内容在内存中的连续性,插入的复杂度是O(N),即每次插入都会重新进行realloc。对象结构中ptr所指向的就是一个ziplist。整个ziplist只需要malloc一次,它们在内存中是一块连续的区域。
linkedlist是一种双向链表。它的结构比较简单,节点中存放pre和next两个指针,还有节点相关的信息。当每增加一个node的时候,就需要重新malloc一块内存。
(3)问题扩展
获取当前同时还会问Redis数据库有几种数据类型,然后深入去问比如有没有深入了解过Redis,说说Redis里面list的底层实现,说说set数据类型为何支持去重等等,是一类拓展的问题。
(4)结合项目中使用
说说你做过的项目里哪些地方用到了Redis数据库。
为什么要在项目中使用Redis数据库。


猜你喜欢:

python编程(redis操作)

Redis是什么?Redis相比memcached有哪些优势?

Redis如何实现分布式阻塞队列?

传智教育Python+数据分析培训

0 分享到:
和我们在线交谈!