Redis源码剖析与实战- 极客时间课程推荐/优惠

Redis源码剖析与实战--极客时间课程推荐/优惠

深入源码底层实现,轻松通关Redis面试
蒋德钧中科院计算所副研究员
专栏 | 47讲 | 18440人已学习
优惠价¥59原价:129
官网优惠购买

版权声明

本站非极客时间官网,与官方无任何关系。我们不提供课程下载或详细内容,仅作为课程分享和推荐平台。我们鼓励大家支持正版,尊重创作者的劳动成果,这样不仅能帮助创作者持续产出优质内容,也能让自己获得更好的学习体验。请通过官方渠道购买和学习课程,感谢您的理解与支持。

课程详情

你将获得

  • 从源码角度理解Redis系统设计思路;
  • 经典C语言的开发技巧;
  • 掌握计算机系统设计思想;
  • Redis高频面试题目解析。

课程介绍

说实话,平常我们在基于Redis做应用开发的时候,可能只是把它作为一个缓存系统或是数据库来存取数据,并不会接触到源码层面的东西。

但实际上,我们在使用或运维Redis的时候,经常会面临Redis性能变差、Redis实例故障等会影响到业务应用运行的问题。再者,经历过大厂面试的人也知道,很多互联网公司在招聘资深技术岗时,都会问一些跟Redis相关的考点问题。

这些问题怎么解决、怎么回答,其实考验的就是我们对Redis底层源码的掌握程度。但是,阅读源码,你可能觉得想想都是一件很难的事情:我是想读Redis源码,但是总感觉无从下手,或者是无所适从,结果最后就不了了之了。

其实,你之所以“无从下手”的原因,是缺少了代码结构的全景图;而出现“无所适从”的问题,是缺少阅读目标的牵引和基本原理的支撑。简单来说,就是你没有掌握科学、高效的代码阅读方法。

所以在这门课程中,蒋德钧老师就会分享他实际阅读Redis源码总结出来的经验和方法,帮助你先从整体上掌握Redis源码的结构,也就是形成一幅Redis源码全景图。

然后,蒋老师会带你细分Redis的各大功能特性,梳理出Redis功能模块的主线逻辑,让你有目标、更高效地阅读和学习代码,进一步掌握Redis不同功能特性的设计与实现思路。并且在阅读代码的过程中,还会带你体会和掌握关键源码对应的计算机系统设计思想,从而你也可以把这些设计思想应用到自己的系统开发中。

课程模块设计

课程主体划分为以下6大模块。

  • 数据结构:你会学习到Redis主要数据结构的设计思想和实现,包括字符串的实现方法、内存紧凑型结构的设计、哈希表性能优化设计,以及ziplist、quicklist、listpack、跳表的设计与实现等。
  • 网络通信与执行模型:你会掌握Redis server的启动流程、高性能网络通信设计与实现、事件驱动框架的设计与实现、Redis线程类型的设计和优化等。
  • 缓存:你会了解常见的缓存替换算法是如何从原理转变为代码的,从而更深刻地理解Redis实现缓存算法的设计思路。
  • 可靠性保证:你会掌握RDB、AOF的具体实现,分布式系统中Raft一致性协议的设计实现,以及故障切换的关键代码实现等代码设计思路。
  • 切片集群:你会学习到Redis切片集群中关键机制的设计与实现,包括Gossip通信协议、请求重定向、数据迁移等,并帮你搞懂面试中关于构建提升Redis使用可扩展性的解题思路。
  • 编程技巧:你会学习和掌握Redis源码中使用的一些编程技巧,并可以应用到自己的程序开发中。

课程中如果没有特殊说明,老师介绍的源码都是基于 Redis 5.0.8 版本的。

课程目录

课前导读

  • 开篇词 | 阅读Redis源码能给你带来什么?
  • 01 | 带你快速攻略Redis源码的整体架构

数据结构模块

  • 02 | 键值对中字符串的实现,用char*还是结构体?
  • 03 | 如何实现一个性能优异的Hash表?
  • 04 | 内存友好的数据结构该如何细化设计?
  • 05 | 有序集合为何能同时支持点查询和范围查询?
  • 06 | 从ziplist到quicklist,再到listpack的启发
  • 07 | 为什么Stream使用了Radix Tree?

事件驱动框架和执行模型模块

  • 08 | Redis server启动后会做哪些操作?
  • 09 | Redis事件驱动框架(上):何时使用select、poll、epoll?
  • 10 | Redis事件驱动框架(中):Redis实现了Reactor模型吗?
  • 11 | Redis事件驱动框架(下):Redis有哪些事件?
  • 12 | Redis真的是单线程吗?
  • 13 | Redis 6.0多IO线程的效率提高了吗?
  • 14 | 从代码实现看分布式锁的原子性保证

缓存模块

  • 15 | 为什么LRU算法原理和代码实现不一样?
  • 16 | LFU算法和其他算法相比有优势吗?
  • 17 | Lazy Free会影响缓存替换吗?

不定期加餐

  • 加餐1 | Redis性能测试工具的使用
  • 加餐2 | 用户Kaito:我是怎么读Redis源码的?
  • 加餐3 | 从Redis到其他键值数据库的学习体会
  • 加餐4 | RDB和AOF文件损坏了咋办?
  • 用户故事 | 曾轼麟:世上无难事,只怕有心人

可靠性保证模块

  • 18 | 如何生成和解读RDB文件?
  • 19 | AOF重写(上):触发时机与重写的影响
  • 20 | AOF重写(下):重写时的新写操作记录在哪里?
  • 21 | 主从复制:基于状态机的设计与实现
  • 22 | 哨兵也和Redis实例一样初始化吗?
  • 23 | 从哨兵Leader选举学习Raft协议实现(上)
  • 24 | 从哨兵Leader选举学习Raft协议实现(下)
  • 25 | Pub/Sub在主从故障切换时是如何发挥作用的?

期中测试

  • 期中测试 | 这些Redis源码知识,你都掌握了吗?
  • 期中测试题答案 | 这些问题你都答对了吗?

Redis Cluster模块

  • 26 | 从Ping-Pong消息学习Gossip协议的实现
  • 27 | 从MOVED、ASK看集群节点如何处理命令?
  • 28 | Redis Cluster数据迁移会阻塞吗?

编程技巧模块

  • 29 | 如何正确实现循环缓冲区?
  • 30 | 如何在系统中实现延迟监控?
  • 31 | 从Module的实现学习动态扩展功能
  • 32 | 如何在一个系统中实现单元测试?

问题答疑

  • 答疑1 | 第1~6讲课后思考题答案及常见问题答疑
  • 答疑2 | 第7~12讲课后思考题答案及常见问题答疑
  • 答疑3 | 第13~18讲课后思考题答案及常见问题答疑
  • 答疑4 | 第19~24讲课后思考题答案及常见问题答疑
  • 答疑5 | 第25~32讲课后思考题答案及常见问题答疑

结束语

  • 结束语 | Redis源码阅读,让我们从新开始
  • 结课测试 | 一套习题,测测你的Redis源码知识掌握程度

作者介绍

蒋德钧,中科院计算所副研究员,清华大学硕士,荷兰阿姆斯特丹 Vrije Universiteit 博士,长期致力于研究 Redis,与阿里、蚂蚁金服、百度、华为、中兴等公司开展多种项目合作,具有非常丰富的 Redis 实战经验。与此同时,还长期研究新型存储介质、键值数据库、存储系统、操作系统等,在顶级国际会议上发表论文十余篇,申请 NVM (非易失内存)相关专利二十多项。

作者其他课程

Redis核心技术与实战 - 极客时间课程推荐/分享/优惠/折扣
Redis核心技术与实战
从原理到实战,彻底吃透 Redis
蒋德钧中科院计算所副研究员
专栏 | 84056人已学习
优惠价¥68原价:199
官网优惠购买

推荐

RAG前沿入门课 - 极客时间课程推荐/分享/优惠/折扣
RAG前沿入门课
一场从RAG到KG/Graph-RAG的探索之旅
老刘老刘说NLP技术公众号/社区作者
视频课 | 825人已学习
优惠价¥29原价:39
官网优惠购买
Rust程序设计(第2版) - 极客时间课程推荐/分享/优惠/折扣
Rust程序设计(第2版)
Rust程序设计(第2版)
Jim Blandy, Jason Orendorff, Leonora F. S. Tindall软件工程师
专栏 | 2244人已学习
优惠价¥62.93原价:89.9
官网优惠购买
正则表达式入门课 - 极客时间课程推荐/分享/优惠/折扣
正则表达式入门课
教你轻松学习正则
涂伟忠高级研发工程师
专栏 | 24952人已学习
优惠价¥59原价:99
官网优惠购买
Vue.js设计与实现 - 极客时间课程推荐/分享/优惠/折扣
Vue.js设计与实现
Vue.js设计与实现
霍春阳(HcySunYang)Vue.js官方团队成员
专栏 | 734人已学习
优惠价¥29.95原价:59.9
官网优惠购买
Vim 实用技巧必知必会 - 极客时间课程推荐/分享/优惠/折扣
Vim 实用技巧必知必会
让编程效率神器为我所用
吴咏炜前 Intel 资深软件架构师
专栏 | 21984人已学习
优惠价¥59原价:99
官网优惠购买
如何读懂一首诗 - 极客时间课程推荐/分享/优惠/折扣
如何读懂一首诗
成为一个有诗意的人
王天博《中国诗词大会》、《中华好诗词》明星选手
专栏 | 2676人已学习
优惠价¥59原价:99
官网优惠购买