Redis核心技术与实战 / 从原理到实战,彻底吃透 Redis
蒋德钧
中科院计算所副研究员
  • 课程目录
  • 课程介绍
  • 开篇词 | 这样学Redis,才能技高一筹

    如果你只是急于解决这些一个个细微的问题,你的Redis使用能力就很难得到质的提升。

  • 01 | 基本架构:一个键值数据库包含什么?

    如果我们想要深入理解和优化Redis,就必须要对它的总体架构和关键模块有一个全局的认知。

  • 02 | 数据结构:快速的Redis有哪些慢操作?

    一提到Redis,我们的脑子里马上就会出现一个词:“快。”但是你有没有想过,Redis的快,到底是快在哪里呢?

  • 03 | 高性能IO模型:为什么单线程Redis能那么快?

    严格来说,Redis并不是单线程,但是我们一般把Redis称为单线程高性能。

  • 04 | AOF日志:宕机了,Redis如何避免数据丢失?

    AOF方法通过逐一记录操作命令,在恢复时再逐一执行命令的方式,保证了数据的可靠性。

  • 05 | 内存快照:宕机后,Redis如何实现快速恢复?

    有没有既可以保证可靠性,还能在宕机时实现快速恢复的方法呢?这就是内存快照。

  • 06 | 数据同步:主从库如何实现数据一致?

    多实例之间的数据如何保持一致呢?数据读写操作可以发给所有的实例吗?

  • 07 | 哨兵机制:主库挂了,如何不间断服务?

    无论是写服务中断,还是从库无法进行数据同步,都是不能接受的。所以,如果主库挂了,我们就需要运行一个新主库

  • 08 | 哨兵集群:哨兵挂了,主从库还能切换吗?

    一旦多个实例组成了哨兵集群,即使有哨兵实例出现故障挂掉了,其他哨兵还能继续协作完成主从库切换的工作。

  • 09 | 切片集群:数据增多了,是该加内存还是加实例?

    随着用户或业务规模的扩展,不可避免地要遇到保存大量数据的情况。而切片集群,就是一个非常好的解决方案。

  • 10 | 第1~9讲课后思考题答案及常见问题答疑

    今天,我们来聊一聊课后题答案,并且挑选一些典型问题,集中进行一次讲解,希望可以解决你的困惑。

  • 11 | “万金油”的String,为什么不好用了?

    如果你在使用String类型时也遇到了内存空间消耗较多的问题,就可以尝试下今天的解决方案了。

  • 12 | 有一亿个keys要统计,应该用哪种集合?

    要想选择合适的集合,我们就得了解常用的集合统计模式。这节课,我就给你介绍集合类型常见的四种统计模式。

  • 13 | GEO是什么?还可以定义新的数据类型吗?

    在统计海量数据时,五种基本数据类型的内存开销很大,而且对于一些特殊的场景,它们是无法支持的,那该怎么办呢?

  • 14 | 如何在Redis中保存时间序列数据?

    时间序列数据的特点是没有严格的关系模型,记录的信息可以表示成键和值的关系,Redis正好可以满足这类数据的存取需求。

  • 15 | 消息队列的考验:Redis有哪些解决方案?

    关于是否用Redis做消息队列的问题,不能一概而论,我们需要考虑业务层面的数据体量,以及对性能、可靠性、可扩展性的需求。

  • 16 | 异步机制:如何避免单线程模型的阻塞?

    我们必须要重视所有可能影响Redis性能的因素,不仅要知道具体的机制,提前准备好应对异常的方案。

  • 17 | 为什么CPU结构也会影响Redis的性能?

    如果不了解CPU对Redis的影响,就可能会遗漏一些调优方法,不能把Redis的性能发挥到极限。

  • 18 | 波动的响应延迟:如何应对变慢的Redis?(上)

    这节课,我给你介绍两个判断Redis变慢的方法。同时,还会跟你分享一下相应的解决方案。

  • 19 | 波动的响应延迟:如何应对变慢的Redis?(下)

    如果在排查时发现,Redis没有执行大量的慢查询命令,也没有同时删除大量过期keys,是不是就束手无策了呢?

  • 20 | 删除数据后,为什么内存占用率还是很高?

    明明做了数据删除,数据量已经不大了,为什么使用top命令查看,还会发现,Redis占用了很多内存呢?

  • 21 | 缓冲区:一个可能引发“惨案”的地方

    缓冲区是用来避免请求或数据丢失的“惨案”的,但也只有用对了,才能真正起到“避免”的作用。

  • 22 | 第11~21讲课后思考题答案及常见问题答疑

    课后思考题是一种很好地梳理重点内容、拓展思路的方式,所以,在接下来的课程里,希望你能多留言聊一聊你的想法。

  • 23 | 旁路缓存:Redis是如何工作的?

    这节课,我们来了解下缓存的特征和Redis适用于缓存的天然优势,以及Redis缓存的具体工作机制。

  • 24 | 替换策略:缓存满了怎么办?

    在这节课上,围绕着“缓存满了该怎么办”这一问题,介绍了缓存替换时的数据淘汰策略,以及被淘汰数据的处理方法。

  • 25 | 缓存异常(上):如何解决缓存和数据库的数据不一致问题?

    只要我们使用Redis缓存,就必然会面对缓存和数据库间的一致性保证问题,这也算是Redis缓存应用中的“必答题”了。

  • 26 | 缓存异常(下):如何解决缓存雪崩、击穿、穿透难题?

    缓存数据时可能会出现3个异常问题,这讲内容会说说这三个问题的表现、诱发原因以及解决方法。

  • 27 | 缓存被污染了,该怎么办?

    缓存污染一旦变得严重后,就会有大量不再访问的数据滞留在缓存中。

  • 28 | Pika:如何基于SSD实现大容量Redis?

    基于大内存的大容量实例在实例恢复、主从同步的过程中会引起一系列潜在问题,例如恢复时间增长、主从切换开销大、缓冲区易溢出。那该怎么办呢?

  • 29 | 无锁的原子操作:Redis如何应对并发访问?

    原子操作是指执行过程保持原子性的操作,而且原子操作执行时并不需要再加锁,实现了无锁操作。这样一来,既能保证并发控制,还能减少对系统并发性能的影响。

  • 30 | 如何使用Redis实现分布式锁?

    Redis本身可以被多个客户端共享访问,可以用来保存分布式锁,而且它的读写性能高,可以应对高并发的锁操作场景。

  • 31 | 事务机制:Redis能实现ACID属性吗?

    如果有些属性在一些场景下不能保证的话,很可能会导致数据出错。

  • 32 | Redis主从同步与故障切换,有哪些坑?

    这节课,我就向你介绍3个坑,分别是主从数据不一致、读到过期数据,以及不合理配置项导致服务挂掉。

  • 33 | 脑裂:一次奇怪的数据丢失

    这节课,我就结合我遇见的这个真实问题,带你一起分析和定位问题,帮助你掌握脑裂的成因、后果和应对方法。

  • 34 | 第23~33讲课后思考题答案及常见问题答疑

    今天,又到了我们的答疑时间,我们一起来学习下第23~33讲的课后思考题。同时,我还给你讲解两道典型问题。

  • 35 | Codis VS Redis Cluster:我该选择哪一个集群方案?

    关于Codis和Redis Cluster的选型考虑,我从四个维度给你提供一些建议,希望能帮助到你。

  • 36 | Redis支撑秒杀场景的关键技术和实践都有哪些?

    在实际秒杀活动进行时,库存查验和库存扣减是承受巨大并发请求压力的两个操作,同时,这两个操作的执行需要保证原子性。

  • 37 | 数据分布优化:如何应对数据倾斜?

    如果发生了数据倾斜,那么保存了大量数据或热点数据的实例的处理压力就会增大,速度变慢,甚至可能会导致内存资源耗尽而崩溃。

  • 38 | 通信开销:限制Redis Cluster规模的关键因素

    实例间的通信开销会随着实例规模增加而增大,在集群超过一定规模时,集群吞吐量反而会下降。

  • 39 | Redis 6.0的新特性:多线程、客户端缓存与安全

    今天,我来和你聊聊Redis 6.0中的几个关键新特性,包括面向网络处理的多IO线程、RESP 3协议的使用等。

  • 40 | Redis的下一步:基于NVM内存的实践

    我认为,Redis发展的下一步,就可以基于NVM内存来实现大容量实例,或者是实现快速持久化数据和恢复。

  • 41 | 第35~40讲课后思考题答案及常见问题答疑

    今天是我们最后一节答疑课,我会带你一起分析一下第35~40讲的课后思考题。同时,我还会给讲解两个典型问题

  • 期末测试 | 这些Redis核心知识,你都掌握了吗?

    还等什么?快来测一测吧。

  • 加餐(一)| 经典的Redis学习资料有哪些?

    如果想要持续精进自己的技术,还需要不断丰富自己的知识体系,那么,阅读就是一个很好的方式。

  • 加餐(二)| 用户Kaito:我是如何学习Redis的?

    每个人学习Redis的方法都不同,多搜集一种方法,就多一种参考,来听听Kaito同学总结的Redis学习路径吧。

  • 加餐(三)| 用户Kaito:我希望成为在压力中成长的人

    今天,我再分享一下我的学习方法,包括领先一步的心理建设、事半功倍的学习方法以及提升效率的小技巧。

  • 加餐(四) | Redis客户端如何与服务器端交换命令和数据?

    如果要对Redis客户端进行二次开发(比如增加新的命令),我们就需要了解请求和响应涉及的命令、数据在客户端和服务器之间传输时,是如何编码的。

  • 加餐(五) | Redis有哪些好用的运维工具?

    我们在应用Redis时,经常会面临的运维工作包括Redis的运行状态监控,数据迁移,主从集群、切片集群的部署和运维。

  • 加餐(六)| Redis的使用规范小建议

    如果说之前的内容教会了你怎么用,那么今天的内容,就是帮助你用好Redis,尽量不出错。

  • 加餐(七) | 从微博的Redis实践中,我们可以学到哪些经验?

    俗话说“他山之石,可以攻玉”,学习掌握这些经验,可以帮助我们在自己的业务场景中更好地应用Redis。

  • 期中测试题 | 一套习题,测出你的掌握程度

    我想给你分享一下我自己的学习方法。

  • 期中测试题答案 | 这些问题,你都答对了吗?

    今天,我来公布一下主观题的答案。

  • 结束语 | 从学习Redis到向Redis学习

    如果说我们之前一直在学习Redis本身,那么今天,我们来看看能向Redis学到什么。

【立省 ¥40丨仅限前 50 人】

拼团+口令「happy2021」立省 ¥40, 原价 ¥129,口令仅限「前 50 人」 有效!

你将获得

  • 系统高效的 Redis 学习路径
  • 透彻理解 Redis 核心原理
  • 高并发场景下的缓存解决方案
  • 解锁 Redis 经典面试问题

讲师介绍

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

课程介绍

作为同时具备高性能、高可靠和高可扩展性的典型键值数据库,Redis不仅功能强大,而且稳定,理所当然地成为了大型互联网公司的首选。

众多大厂在招聘的时候,不仅会要求面试者能简单地使用Redis,还要能深入地理解底层实现原理,并且具备解决常见问题的能力。可以说,熟练掌握Redis已经成为了技术人的一个必备技能。

但是,在学习和使用Redis的过程中,总不可避免地遇见一些棘手的问题,比如:

  • Redis的key和数据结构应该怎么设计?有什么最佳实践?
  • Redis集群如何均衡数据?又如何横向扩展?
  • 怎么保证数据的一致性?热点数据的问题怎么解决?
  • RDB持久化生成的数据快照,每次更新是全量更新还是增量更新?
  • 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题怎么解决?
  • 如何高效阅读Redis源代码?

蒋德钧老师根据自己多年的研究以及教学经验,梳理了一套系统的Redis学习方法。他将纷繁复杂的Redis知识和问题归纳在“两大维度,三大主线”这个框架之中,希望帮你建立起系统观和全局观,从而带你彻底搞懂底层实现原理。除此之外,蒋德钧老师还会具体分析常见的问题以及应对方案,讲解Redis在典型场景(比如缓存、秒杀)中的应用,让你能够快速掌握行之有效的实战经验,并应用在自己的Redis项目中,全方位提升你的实战能力。

课程模块设计

课程主体分为4大模块。

  • 基础篇:从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。

  • 实践篇:重点从典型案例和常用场景两个维度介绍Redis的实战经验。在“案例”层面,会详细讲解数据结构的合理使用、避免请求阻塞和抖动、提升内存使用效率的关键技巧;在“场景”层面,会针对缓存和集群两大场景,透彻讲解缓存的基本原理,以及雪崩、穿透、污染等异常情况的应对方案,还会围绕集群方案优化、数据一致性、高并发访问等问题,分享具体可行的解决方案。

  • 未来篇:围绕Redis 6.0的多线程等新特性进行讲解,还会介绍业界的最新探索,帮你提前掌握Redis的发展路线图,为未来的发展做好准备。

  • 加餐篇:不定期更新,会介绍Redis的常用工具、客户端定制开发、经典的使用规范,还会带你解读大厂的Redis实践,进一步提升你的实战能力。

课程目录

特别放送

订阅须知