你好,我是蒋德钧。

咱们的课程已经更新过半了,我看到很多同学一直在坚持学习,课程每次更新后,都会认真回答课后题,而且还会分享自己的思考和经验。但是,我也发现,最近有不少同学都掉队了,积累了很多节课都没有学习过。

从今天开始,我们就进入期中周了。我知道,很多同学平时确实比较忙,想等到有了大块的时间再来学习。所以,在刚开始设计课程时,我就特意设置了期中周。巧的是,我们的期中周刚好和国庆黄金周重合了。那么,现在,就是你赶上进度的好机会。

在开始做题之前,我想多说几句。

Redis 的知识点比较多,而且一旦涉及到性能优化、可靠性保证等需求时,我们就需要和进程、线程、内存管理、磁盘 IO、网络连接等计算机底层系统知识打交道。如果你不熟悉底层系统的知识,在学习 Redis 时,就需要进一步查资料。但是我们平时都很忙,可能会来不及查资料,过一段时间可能就忘了,再想学习时,就需要重新了解,学习成本比较高。

针对这个问题,我想给你分享一下我自己的学习方法。我会用一个 word 文档或者其他的笔记软件,把涉及到的知识点先记录下来。对于那些我没搞清楚的知识点,我会把它们标记为红色,表明这是一个 to-do 项。等我有空的时候,我就会把这个文档拿出来,挨个儿去查看那些标红的知识点,查找相关的资料,补上知识漏洞。

你可以不要小瞧这个文档,日积月累下来,这就是你的知识宝库。你已经了解的知识点以及还需要进一步学习的知识点,在文档中一目了然。而且,咱们常说“温故而知新”,这个文档就是一个“温故知新”的好材料。

另外,我知道很多同学还有一个疑惑:在学习的时候感觉自己都明白了,但是,真正应用的时候,发现自己又说不清楚或者是想不明白。其实,一个潜在的原因就是,我们对技术点的掌握还不牢固,没有形成自己内在的一套知识体系。

所以,我再给你推荐一个非常有用的学习方法,那就是“转述”。每学完一节课之后,就找一个小伙伴,把你学到的内容讲给他 / 她听。如果对方能听明白,就表示你理解了这些内容。我们自己在讲述内容的时候,潜意识会自动梳理知识点以及它们之间的逻辑关系。当然,你也可以写成一篇文章,如果你发现自己讲不清楚,或者是写不出来,那就代表,你对这些内容的理解有偏差,或者是没有把它们纳入你自己的知识体系。这个时候,你一定要找出来知识盲区,及时在留言区提出来,和我或者是其他小伙伴一起交流讨论。

好了,那话不多说,接下来就准备来自测一下吧。我给你出了一套测试题,包括一套选择题,和一套问答题。

  1. 选择题:满分共 100 分,包含 15 道单选题和 5 道多选题。提交试卷之后,系统自动评分。
  2. 问答题:包括 3 道题目,不计入分数,但我希望你能认真回答这些问题,可以把你的答案写在留言区。在 10 月 7 日这一天,我会公布答案。

选择题

问答题

第一题

Redis 在接收多个网络客户端发送的请求操作时,如果有一个客户端和 Redis 的网络连接断开了,Redis 会一直等待该客户端恢复连接吗?为什么?

第二题

Redis 的主从集群可以提升数据可靠性,主节点在和从节点进行数据同步时,会使用两个缓冲区:复制缓冲区和复制积压缓冲区,这两个缓冲区的作用各是什么?会对 Redis 主从同步产生什么影响吗?

第三题

假设在业务场景中,我们有 20GB 的短视频属性信息(包括短视频 ID、短视频基本信息,例如短视频作者、创建时间等)要持久化保存,并且线上负载以读为主,需要能快速查询到这些短视频信息。

现在,我们想使用 Redis 来实现这个需求,请你来设计一个解决方案。我来提几个问题,你可以思考下。

首先,你会用 Redis 的什么数据类型来保存数据?如果我们只用单个实例来运行的话,你会采用什么样的持久化方案来保证数据的可靠性?

其次,如果不使用单实例运行,我们有两个备选方案:一个是用两台 32GB 内存的云主机来运行主从两个 Redis 实例;另一个是用 10 台 8GB 的云主机来运行 Redis Cluster,每两台云主机分别运行一个 Redis 实例主库和从库,分别保存 4GB 数据,你会用哪种方案呢?请聊一聊你的想法。

好了,这节课就到这里。希望你能抓住期中周的机会,查漏补缺,快速地提升 Redis 实战能力。我们 10 月 7 日见!