首页技术文章正文

Redis中list底层的实现方式与区别【pytho面试题】

更新时间:2021-04-02 来源:黑马程序员 浏览量:

1577370495235_学IT就到黑马程序员.gif


(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数据库。



猜你喜欢:

redis缓存原理与实现:为什么redis可以做缓存?【python面试题】

如何用redis缓存广告数据?【Python面试题】

python编程(redis操作)    

什么是整型?怎样理解Python的整型?    
黑马程序员Python+数据分析培训

分享到:
在线咨询 我要报名
和我们在线交谈!