查看原文
其他

八股文骚套路之Redis(重构完善版)

大白 CS指南 2022-09-29

大家好,我是大白!

这两周项目巨忙(估计还有忙两周),大白经常11点多才下班。

利用午休时间对之前写的 Redis 部分的内容进行了完善,为大家的面试助力一波!

下面是正文。

目前 Redis 也是后端技术栈中的一员大将,后端面试过程中对 Redis 的考察也越来越多。不过在后端面试过程中对 Redis 的要求没有像 MySQL 那么高(就是面试官问你 Redis,你直接否定三连,这是啥?没听说过!我不会!问题也不是太大)。不过还是我在之前面试八股文系列的文章中所提到的,大家在准备后端面试时,后端技术栈中除了 Java 基础外至少还要有两到三项做到熟悉,作为面试亮点,这样在面试大厂时才和面试官有的聊。我在准备秋招的过程中就把 Redis 部分详细准备,当作我面试的亮点了。

1救急准备

对于没有太多时间准备 Redis 的同学,我在这里给大家准备一些面试常问的八股问题。你在面试大厂时,只要别给面试官对你 Redis 部分太高的期望,你把下面这些问题能回答清楚就算过关了。

  1. 什么是 Redis?【⭐⭐】
  2. Redis 除了做缓存,还能做什么?【⭐⭐⭐⭐】
  3. Redis 有哪些数据类型?这些数据类型的应用场景分别是什么?你在项目中用到了吗?【⭐⭐⭐⭐⭐】
  4. Redis6.0 之后为何引入了多线程?【⭐⭐⭐】
  5. Redis 过期数据删除策略讲一下。【⭐⭐⭐】
  6. Redis 的持久化策略了解嘛?分别介绍下 RDB 和 AOF。【⭐⭐⭐⭐】
  7. 什么是缓存穿透?什么是缓存击穿?什么是缓存雪崩?怎么解决(最高频问题)
  8. 设计一个分布式锁?【⭐⭐】
  9. Redis 内存淘汰机制了解么?类似问题:MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?【⭐⭐⭐⭐】
  10. Redis 事务你了解嘛?【⭐⭐】
  11. 如何保证 Redis 和 MySQL 的数据一致性?(如果项目同时用到 Redis 和 MySQL,这个问题特别容易被问)【⭐⭐⭐⭐】

由于篇幅问题,我并没有写上面这些问题的答案。你可以自行查阅,你也可以参考 JavaGuide 这个开源项目,涵盖了大部分 Java 程序员所需要掌握的核心知识。背面试八股文,这是一个必看的开源项目(学 Java 基础以及实战也推荐看这个项目)。

  • Github 地址:https://github.com/Snailclimb/JavaGuide
  • Gitee 地址:https://gitee.com/SnailClimb/JavaGuide(Github 无法访问或者访问速度比较慢的小伙伴可以看码云上的对应内容)
  • 在线阅读地址(推荐 👍 阅读体验非常赞!): https://javaguide.cn/
JavaGuide在线阅读网站首页

当然了,你也可以直接百度/Google 搜索,篇幅有限,我就不贴答案了。

2系统学习

我在准备 Redis 前没任何 Redis 经验,我集中准备 Redis 用了差不多三周的时间,每天看四个小时左右。后期每次在重要面试前也会花一两个小时进行复习。这是我在 Redis 上花的时间,供大家参考。

学 Redis 我推荐这本书《Redis 的设计与实现》,我先声明,我可不是卖书的哈。我推荐的是我实际看过的书,没书的大家自己想办法呀~不过还是尽可能支持一下作者噢。

img

推荐理由:这本书讲的特别特别详细,又有概念讲解,又有实际例子。十分通俗易懂。

学习内容

第一部分 数据结构与对象

Redis 的数据结构设计十分巧妙,我也是在看这部分时决定详细学习 Redis 的。大家千万不要去背这些数据结构的代码是怎么写的,这么多你肯定记不住。大家主要体会一下 Redis 的这些 数据结构设计好在哪,面试的时候如果面试官问到这些数据结构,可以相应的抛出一些我觉得 xxx 这样设计的很不错,他用 xxx 优化了什么问题的观点,也是不错的。另外在这本书上没有,但是一个挺重要的数据结构叫 布隆过滤器 强烈建议大家看一下,这个数据结构在解决许多面试官提出的场景题时都是很管用的。

第二部分 单机数据库的实现

面试官特别喜欢从这一部分出问题,所以是需要花点功夫把这些八股文背熟的。

第 9 章 数据库

这一章要记牢 Redis 的过期删除策略、以及 AOF、RDB 和复制功能对过期键的处理。其它的内容做到理解就好。

第 10 章 RDB 持久化

记熟Redis 服务器保存和载入 RDB 文件的方法,要辨别出SAVE 命令和 BGSAVE 的区别。把自动保存功能的实现原理也尽可能记熟。RDB 的文件结构了解就好。

第 11 章 AOF 持久化

记熟 AOF 持久化 的实现方式,记熟 AOF 文件载入与数据还原的流程,记熟 AOF 重写方式。这一章学习过程中要与 RDB 去做对比。

第 12 章 事件

Redis 文件事件处理器 的组成部分要记熟,特别是 I/O 多路复用要充分理解,这里在面试官问 I/O 相关的时候可以给面试官讲,并且可以很自然的把话题扯到 Redis~

时间事件理解就好了。

第 13 章 客户端

这一章理解就好

第 14 章 服务器

把一个命令请求从发送到获得回复的过程理解,不用硬背,不过要大概能复述出来。serverCron 函数负责管理服务器的资源,把这个函数理解了给面试官讲也是不错的。

第三部分 多机数据库的实现

这一部分如果你不主动提,面试官一搬不会主动问。不过把这里理解清楚以后融合到项目中主动给面试官讲还是挺不错的。我就把这部分融合到我的秒杀系统中了,给面试官讲完以后感觉效果还不错。

第 15 章 复制

主从复制的流程要尽可能记熟呀,把这里记熟给面试官讲还是挺不错的。注意区分新旧版本的 Redis 在主从复制上的差异。

第 16 章 哨兵

记牢 Sentinel 的初始化过程,记牢 Sentinel 监视服务器的方法和原理,记牢 Sentinel 系统对主服务器执行故障转移的过程。

第 17 章 集群

我把 Redis 集群用在我的秒杀系统上了,所以集群的节点槽指派命令执行重新分片转向故障转移消息都背的很熟了。讲项目的时候也能用上这些。

第四部分 独立功能的实现

这一部分,我就重点看了发布与订阅、看了 Lua 脚本,其它的就没怎么看了。大家感兴趣可以多看一下。

好了,经过上面的学习,Redis 的基础就打的很牢了。不过我在这里还要给大家多推荐一本书,它就是《Redis 深度历险》。《Redis 设计与实现》偏向与 Redis 的原理,而《Redis 深度历险》偏向于实际场景的应用。大家在学完我上述讲的知识点以后,再选择性的学习两三个《Redis 深度历险》中的实例。在校招面试中就不用担心面试官的发难了。

img

如果你比较喜欢看视频的话,推荐你看一下尚硅谷的 《Redis 入门到精通》。

这套课程采用的是 Redis 6.2.1 版本,从 Redis 的基本概念开始讲解一直到 Redis 持久化 RDB 和 AOF、Redis 主从复制和集群、Redis 应用中的问题和解决方案(缓存穿透、击穿、雪崩、分布式锁)、Redis 的新数据类型以及 Redis 6 的新特性等 Redis 进阶内容。

看看这个点赞、投币、收藏、转发量是多么恐怖!

尚硅谷算得上是比价良心的培训机构了,免费开源了很多免费且高质量的教学视频,帮助了很多小伙伴学习编程。

公众号“CS 指南”后台回复“尚硅谷”可以领取尚硅谷这个系列完整的视频教程。

好了,这就是 Redis 部分的全部内容了,这份讲解可真的是保姆级的面试指导了,希望大家能一键三连呀!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存