如何玩转 Redis ?| 极客时间
如果你做后端,面试八成会被问到 Redis,尤其在一些大厂面试里更常见,而且他们不仅要求面试者能简单使用 Redis,还要深入理解其底层实现原理,具备解决常见问题的能力。不夸张地说,后端开发的必备技能之一就是做到熟练使用 Redis。
但我发现,在工作或面试时,大家还是存在不少各种关于理论、实战或源码方面的问题,比如:如何用 Redis 实现分布式锁?Redis 怎样处理过期键?缓存雪崩、穿透、热点问题怎么解决?持久化、集群方案怎么选择?如何优雅地给 Redis 做键值分析?等等。
这里,分享给你一张 Redis 问题画像图和一张 源码全景图,分别能做到帮你快速定位问题对应的 Redis 主线模块及相关技术点和带你理解代码逻辑,从整体性掌握 Redis 源码架构,最终高效阅读源码。
第一张来自 《Redis 核心技术与实战》,专栏不仅原理讲得透彻,实战性也强。深入问题的根源,会带着大家敲代码测试和分析了源码细节,提升你对 Redis 的理解。订阅已经 22,000+ 了。
第二张来自《Redis 源码剖析与实战》,总结了一条高效的 Redis 源码学习路径,会带你吃透 Redis 系统设计思路,并掌握计算机系统设计思想,和经典 C 语言的开发技巧。难得的是,作者还解析了不少 Redis 高频面试题目,为通过大厂的后端面试加码。
这两个专栏的作者都是 蒋德钧,他是中科院计算所副研究员,长期致力于 Redis 研究,与阿里、蚂蚁金服、百度、华为、中兴等公司开展了多种项目合作,具有 Redis 实战经验非常丰富,还申请了 NVM(非易失内存)相关专利二十多项。
考虑到临近求职季,蒋老师特意找到极客时间平台,将两个 Redis 专栏做了联合活动,两个专栏原价 ¥328(¥199+¥129),现在到手只要半价 ¥169 ,非常划算!
扫码立即购买 Redis 合集
半价到手,立省 ¥169
优惠仅 50 份,即将恢复原价
相信大多数人都是带着具体问题学 Redis 的,这些问题固然重要,但如果只关注零散技术点,没有建立起完整的知识框架,你的使用能力很难得到质的提升。
所以,蒋老师在第一季专栏中高度总结出了“两大维度,三大主线”:前者指系统维度和应用维度,后者就是高性能、高可靠和高可扩展。
只有将系统维度和应用维度两相结合,按 “应用场景驱动”和“典型案例驱动”两种方式学习,一个是“面”的梳理,一个是“点”的掌握,才能透彻理解 Redis,建立起结构化的知识体系,快速找到引发问题的关键因素,甚至整理成 Checklist,作为遇到问题时信手拈来的“锦囊妙计”。
更难得的是,第一季专栏更新完,蒋老师还写了好几篇加餐,不仅分享了一些好用的运维工具,还讲解了定制化客户端的开发方法,分享了一些经典学习资料。
当然,作为蒋老师时隔一年的回归之作,第二季 Redis 源码对我们而言同等重要,因为其不仅是一份优秀的 C 语言编程学习素材,能帮你掌握编码规范和技巧,Redis 还是一个非常经典的内存数据库,设计与实现时,会涉及单机键值数据库和分布式系统的关键技术,非常有助于学习和掌握计算机系统设计思想,实现职业能力进阶。
另外,在数据类型上 Redis 也很丰富,参与构建主从集群、切片集群,可以分别提升 Redis 使用的可靠性和可扩展性。因此,针对 Redis 功能特性,蒋老师把源码课分成以下五大模块:
第一个模块:数据结构。 关于 Redis 主要数据结构的设计思想和实现,包括字符串的实现方法、内存紧凑型结构的设计、哈希表性能优化设计,以及 ziplist、quicklist、listpack、跳表的设计与实现等等。
第二个模块:网络通信与执行模型。 这里有 Redis server 的启动流程、高性能网络通信设计与实现、事件驱动框架的设计与实现、Redis 线程类型的设计和优化等等。
第三个模块:缓存。 你将了解常见缓存替换算法如何从原理转变为代码。
第四个模块:可靠性保证。 你将掌握 RDB、AOF 的具体实现,分布式系统中 Raft 一致性协议的设计实现,故障切换的关键代码实现等等。
第五个模块:切片集群。 你将学习到 Redis 切片集群中关键机制的设计与实现,包括 Gossip 通信协议、请求重定向、数据迁移等等。
在学习这五类模块中的关键源码外,蒋老师还介绍了对应的计算机系统设计思想,和 Redis 源码中使用的一些编程技巧,这样方便你应用到自己的程序开发中。
目前两个专栏的留言质量都很高,不仅蒋老师会解答大家的问题,读者自己也会相互切磋,光看评论区都能学到不少,口碑自然不错,截了一些供你参考:
在第一季结束语中,老师写了这么一段话,我特别认同:
我们常说“不积跬步,无以至千里”,这句话中的“跬步”,我把它定义为:做成一件事。我们总会做很多事,但大多数时候,能真正得到提升的是“把事做成”。
成事的目标不分大小。它可以很小,比如学完两节课;也可以很大,比如用 3 个月时间把 Redis 源码读完。最重要的是,一旦定好目标,就要竭尽全力把事做成。随着做成的事越来越多,也就能真正体会到“会当凌绝顶,一览众山小”。
申请了 InfoQ 粉丝 专属优惠:
半价到手,立省 ¥169
👆 扫码立即半价入手
点击「阅读原文」