【面试官】那有序集合为什么要同时使用字典和跳跃表

  • 面试官:你说说Redis有什么底层数据结构支持?
  • 面试官:先讲讲你对字典的理解?
  • 面试官:那字典和Redis的哈希对象不是没什么区别?
  • 面试官:跳跃表呢?
  • 面试官:那有序集合为什么要同时使用字典和跳跃表来实现?
  • 面试官:Redis为了节约内存采用了什么数据结构知道吗?
  • 👉以【面试官面试】形式覆盖Java程序员所需掌握的Java核心知识、面试重点
  • 📚本期是《Redis系列》,其他系列博客请订阅专栏《Java Offer训练营》
  • ❤创作不易,不妨点赞、收藏、关注支持一下

文章目录

  1. Redis底层数据结构
    1. 字典
    2. 字典和哈希对象
  2. 跳跃表
    1. 有序集合数据结构
  3. 整数集合和压缩列表

1. Redis底层数据结构

面试官:你说说Redis有什么底层数据结构支持?

好的,我了解的主要有:

  1. 字典
  2. 跳跃表
  3. 链表,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系列、多线程系列等等 👉制作不易,各位的支持是我创作的最大动力

全部评论
探个头
1 回复
分享
发布于 04-25 23:39 广东

相关推荐

6 12 评论
分享
牛客网
牛客企业服务