这门课解决什么问题

很多做后端开发或准备转行写代码的人,在刚接触数据库时往往只停留在关系型层面,一旦遇到高并发读写、热点数据缓存、排行榜或者限时活动等场景,就会在接口响应时间上吃大亏。这门围绕键值对数据库 Redis 的体系课,解决的就是“数据怎么存在内存里才能既快又稳”的问题。它不教你如何做前端页面,而是专注在后端应对大流量时,如何用 Redis 替代或分担传统磁盘数据库的压力。如果你在工作中经常遇到接口慢、数据库撑不住频繁查询,或者想搞懂缓存到底是怎么运作的,这门课就是针对这些痛点展开的。

适合什么基础与学习建议

这套资料偏重底层逻辑和命令实操,不适合完全没写过代码的纯小白。建议你至少有一点命令行操作基础,能看懂基本的编程逻辑,懂一点其他数据库的简单查询语句会更好。拿到资料后,不用一上来就硬啃后面的高性能模块,强烈建议先从第一部分的快速入门看起。这部分的视频时长较长,但把服务端安装、客户端连接以及五大基础数据类型的增删改查讲得很细。请务必跟着视频把环境搭起来,不要只用眼睛看,亲手敲一遍字符串的 SET 命令、给键值对设置过期时间,再练练列表和哈希类型的基本操作。把基础类型彻底弄懂后,再去推进缓存功能和高性能 IO 模块,这样才不会在底层原理上听天书。

学完能独立做什么

跟着把入门和缓存部分练完,你就能在自己的业务项目里独立接入 Redis 了。具体来说,你能自己写代码完成热点数据的缓存读写,给经常被查询的数据加上过期时间,避免内存被撑爆;面对比如商品库存、点赞数这种高频更新的数据,你能用合适的键值类型去存储,而不是傻傻地去改传统数据库。当业务里需要做简单排行榜时,你能直接用有序集合去实现并做集合间的运算。整体学下来,你不仅知道命令怎么敲,更清楚每种数据结构适合放什么数据,遇到线上缓存穿透或者基础性能瓶颈时,也能有排查思路,而不是只会重启服务。


10 Redis 一:快速入门【4.2 小时】 · 11 Redis 二:缓存功能【6.0 小时】 · 12 Redis 三:高性能之 IO【3.5 小时】 ·

课程目录

*   10 Redis 一:快速入门【4.2 小时】/

  *   01 1_Redis 入门课程内容

  *   02 2_Redis 服务端的安装

  *   03 3_Redis 客户端的使用

  *   04 4_字符串类型:SET 命令

  *   05 5_键值对过期时间 (TTL)

  *   06 6_字符串类型:常用命令

  *   07 7_列表类型:新增操作

  *   08 8_列表类型:删除操作

  *   09 9_列表类型:修改和查询操作

  *   10 10_集合类型:增删改查操作

  *   11 11_哈希类型:新增操作

  *   12 12_哈希类型:删改查操作

  *   13 13_有序集合类型:新增和查询操作

  *   14 14_有序集合类型:删除操作

  *   15 15_有序集合类型:多个集合的差集、交集和并集

  *   16 16_Redis 中的键值对是如何存储的

  *   17 17_Redis 通用的命令

*   11 Redis 二:缓存功能【6.0 小时】/

  *   01 1_缓存功能课程内容

  *   02 2_一个简单的 Web 应用

  *   03 3_debug 的方式看下 Web 应用程序执行顺序

  *   04 4_Web 应用程序如何操作 Redis

  *   05 6_MySQL 和 Redis 数据不一致问题

  *   06 7_解决数据不一致问题:先删除缓存(延迟双删)

  *   07 8_解决数据不一致问题:后删除缓存(异步删除缓存)

  *   08 9_MySQL 和 Redis 数据一致性问题总结

  *   09 10_缓存穿透问题及其解决方案

  *   10 11_使用哈希表解决缓存穿透问题

  *   11 12_布隆过滤器原理

  *   12 13_使用 guava 中布隆过滤器解决缓存穿透问题

  *   13 14_基于 Redis 实现的布隆过滤器解决缓存穿透问题

  *   14 15_Redis 服务端实现的 BloomFilter

  *   15 16_缓存雪崩问题及其解决方案

  *   16 17_互斥锁解决缓存击穿问题

  *   17 18_将常量放在一个地方

  *   18 19_逻辑过期解决缓存击穿问题

*   12 Redis 三:高性能之 IO【3.5 小时】/

  *   01 1_IO 相关课程内容

  *   02 2_基于多路复用技术的 reactor 网络模型

  *   03 3_Redis 实现的 reactor 网络模型

  *   04 4_Redis Server 进程的抽象

  *   05 6_如何理解 Redis 是单线程的

  *   06 7_Redis 持久化方式一:RDB

  *   07 8_手动保存 RDB 文件

  *   08 9_自动保存 RDB 文件

  *   09 10_Redis 持久化方式二:AOF

  *   10 11_AOF 三种写回策略

  *   11 12_AOF 重写机制

  *   12 13_混合持久化

  *   13 14_再来理解 Redis 的线程模型

*   13 Redis 四:高性能之内存【4.7 小时】/

  *   01 1_高性能之内存课程内容_ev

  *   02 2_底层数据结构:简单动态字符串 (SDS)_ev

  *   03 3_SDS 的高效操作和节省内存_ev

  *   04 4_底层数据结构:哈希表_ev

  *   05 5_Redis 哈希表渐进式 rehash 操作_ev

  *   06 6_底层数据结构:压缩列表_ev

  *   07 8_往 ziplist 中添加元素的逻辑_ev

  *   08 9_ziplist 的连锁更新问题_ev

  *   09 10_压缩列表之 quicklist_ev

  *   10 11_压缩列表之 listpack_ev

  *   11 12_压缩列表总结_ev

  *   12 13_底层数据结构:整数集合-IntSet_ev

  *   13 14_redisObject 包装常用的数据类型_ev

  *   14 15_字符串对象的底层编码_ev

  *   15 16_列表对象的底层编码_ev

  *   16 17_哈希对象的底层编码_ev

  *   17 18_集合对象的底层编码_ev

  *   18 19_有序集合对象的底层编码_ev

  *   19 20_Redis 的过期删除策略_ev

  *   20 21_Redis 的内存淘汰策略_ev

*   14 Redis 五:高可靠【2.8 小时】/

  *   01 1_高可靠课程内容

  *   02 2_主从复制集群配置

  *   03 3_主从复制的四大阶段

  *   04 4_全量复制数据详细过程

  *   05 5_增量复制命令详细过程

  *   06 6_主从复制总结

  *   07 7_哨兵节点的作用和任务

  *   08 8_监控:主观下线和客观下线

  *   09 9_选主:筛选 + 打分

  *   10 10_搭建哨兵集群

  *   11 11_验证哨兵集群的主从切换

  *   12 12_哨兵与哨兵之间如何建立连接

  *   13 13_哨兵和从节点如何建立连接

  *   14 14_客户端和哨兵之间的连接

  *   15 15_由哪个哨兵执行主从切换

*   15 Redis 七:分布式锁【3.6 小时】/

  *   01 1_分布式锁课程内容

  *   02 2_Redis 的原子操作

  *   03 3_认识 lua 脚本语言

  *   04 4_Redis 中执行 lua 脚本

  *   05 5_lua 脚本保证多个 redis 命令的原子性

  *   06 6_基于 Redis 实现分布式锁

  *   07 7_分布式锁的测试

  *   08 8_死锁问题和误删除锁问题的解决

  *   09 9_分布式锁实现时还需要考虑的问题

  *   10 10_如何实现分布式可重入锁

  *   11 11_实现分布式可重入锁的 lua 脚本逻辑

  *   12 12_Redisson 实现分布式可重入锁

  *   13 13_Redisson 实现分布式锁重试功能

  *   14 14_Redisson 解决锁超时问题

  *   15 15_Redisson 分布式锁实现小结

  *   16 16_为什么 Redisson 丢弃了红锁呢

*   22 Redis 六:高可扩展【1.5 小时】/

  *   01 1_高可扩展课程内容_ev

  *   02 2_搭建 Redis 分片集群_ev

  *   03 3_散列插槽_ev

  *   04 4_往分片集群中添加一个节点_ev

  *   05 5_主从故障转移_ev

  *   06 6_客户端程序访问分片集群_ev

  *   07 问题一:Redis 主从节点数据不一致.html

  *   08 问题二:客户端读取到过期数据.html

  *   09 问题三:脑裂问题.html