【面试官】那有序集合为什么要同时使用字典和跳跃表
- 面试官:你说说Redis有什么底层数据结构支持?
- 面试官:先讲讲你对字典的理解?
- 面试官:那字典和Redis的哈希对象不是没什么区别?
- 面试官:跳跃表呢?
- 面试官:那有序集合为什么要同时使用字典和跳跃表来实现?
- 面试官:Redis为了节约内存采用了什么数据结构知道吗?
- 👉以【面试官面试】形式覆盖Java程序员所需掌握的Java核心知识、面试重点
- 📚本期是《Redis系列》,其他系列博客请订阅专栏《Java Offer训练营》
- ❤创作不易,不妨点赞、收藏、关注支持一下
文章目录
- Redis底层数据结构
- 字典
- 字典和哈希对象
- 跳跃表
- 有序集合数据结构
- 整数集合和压缩列表
1. Redis底层数据结构
面试官:你说说Redis有什么底层数据结构支持?
好的,我了解的主要有:
- 字典
- 跳跃表
- 链表,Redis采用了有前置后置节点的双端链表,列表键List就是采用这种结构。
1.1 字典
面试官:先讲讲你对字典的理解?
好的,字典其实是一个集合里包含了多个键值对,类似于Java的HashMap。
它的底层包含了两个哈希表,一个平常使用,一个在迁移扩展哈希表rehash时使用。
迁移完成后,原先日常使用的旧哈希表会被清空,新的哈希表变成日常使用的。
1.2 字典和哈希对象
面试官:那字典和Redis的哈希对象不是没什么区别?
有区别的,面向对象不同。
字典是Redis内部的底层数据结构支持,而Redis的哈希对象是对外提供的一种对象。
2. 跳跃表
面试官:跳跃表呢?
它的底层结构类似于一个值 + 保存了指向其他节点的level数组(层),而这个level数组就是用来加快访问其他节点的速度。
typedef struct zski
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
Java Offer训练营 文章被收录于专栏
👉以贴近现实的【面试官面试】形式帮助你系统学习后端技术 👉成体系知识帮你在后端进阶,每一道问答助你怒怼大厂面试官,收获大厂offer 👉《Java Offer训练营》包含Redis系列、MySQL系列、Kafka系列、ZooKeeper系列、JVM系列、多线程系列等等 👉制作不易,各位的支持是我创作的最大动力