课程简介
这门课解决的核心问题 很多开发者在项目里用 Redis,停留在“把它当缓存放 key-value”的层面:知道 set 和 get,知道过期时间,但一碰到线上问题就卡壳。比如缓存击穿、穿透、雪崩到底怎么区分,各自的解决手段在 Redis 侧要配哪些参数?又比如 Redis 内存突然飙高,是大 key 没拆分,还是过期策略没选对?再比如持久化开了 RDB 还…
这门课解决的核心问题
很多开发者在项目里用 Redis,停留在“把它当缓存放 key-value”的层面:知道 set 和 get,知道过期时间,但一碰到线上问题就卡壳。比如缓存击穿、穿透、雪崩到底怎么区分,各自的解决手段在 Redis 侧要配哪些参数?又比如 Redis 内存突然飙高,是大 key 没拆分,还是过期策略没选对?再比如持久化开了 RDB 还是丢数据,开了 AOF 又拖慢写入,到底该怎么权衡?这些问题靠零散的博客答案很难一次性理顺,因为背后牵扯到 Redis 的内部执行流程、内存模型、持久化机制、网络模型等一整套底层逻辑。
这门课就是把 Redis 从“能用”拉到“能掌控”的程度。它不只是列命令清单,而是从底层机制讲起,让你知道每一个特性为什么这么设计、在什么场景下会出问题、出了问题该从哪几个维度排查。比如讲持久化的时候,会拆解 RDB fork 子进程的时机、copy-on-write 在大内存实例下的开销,AOF 重写的触发条件和阻塞风险;讲事务的时候,会明确 Redis 事务和关系型数据库事务的本质区别,为什么 WATCH 能做乐观锁,又为什么不能解决真正的并发原子性问题。把这些底层逻辑打通,你再去看缓存方案、分布式锁、排行榜这些上层应用,就不是在背八股,而是能自己推导方案是否合理。
适合的基础与前置准备
这门课适合已经在项目中接触过 Redis、有至少半年后端开发经验的开发者。你不需要精通 Redis,但至少要用过它做缓存或者会话存储,知道基本的字符串、哈希、列表操作,对“缓存”这个概念不陌生。如果你只会用 Spring Cache 注解或者 RedisTemplate 的封装方法,从来没手动敲过 redis-cli 命令,也没看过 Redis 的配置文件,听前几章的时候可能会有点跳,建议先补一下最基础的命令操作再进入高级部分。
如果你是零基础的初学者,直接上来啃持久化、集群、内存淘汰这些内容会很吃力。比较稳妥的节奏是先把基础数据类型和常用命令练熟,自己本地装一个 Redis 实例,手动写几十个 key,体验一下不同数据类型的适用场景。比如用列表做简单消息队列、用有序集合做排行榜、用哈希存用户信息,先建立直观感受,再去听底层原理就会顺很多。另外,最好有一点操作系统和网络的基础常识,比如知道进程、线程、I/O 模型的基本概念,这样理解 Redis 的单线程模型和多路复用会更容易。
建议优先看的几块内容
第一块建议先看数据类型的深层原理,而不是停留在命令用法。很多人觉得数据类型简单,其实面试和实战里的坑大多藏在这里。比如字符串底层不是简单的字符数组,而是 SDS,它的设计决定了 Redis 处理字符串的效率和内存开销;哈希结构什么时候用 ziplist 什么时候转 hashtable,阈值怎么配,直接影响内存占用和查询性能;有序集合的 skiplist 结构为什么比单纯的链表或数组更适合做排名查询。把这些底层编码结构搞懂,你在选型数据类型的时候就不会凭感觉,而是能算清楚内存成本和访问效率。
第二块重点放在持久化和内存管理。这是线上出问题最高频的区域。持久化部分要对比清楚 RDB 和 AOF 的适用场景,比如对数据丢失容忍度高、追求恢复速度的场景适合 RDB,对数据一致性要求高的场景适合 AOF,还要理解两种方式混合使用的策略。内存管理部分要搞清楚内存淘汰策略的八种分类,各自的触发时机和淘汰逻辑,还有过期键的三种删除策略以及它们对性能的影响。看完这部分,你再去排查 Redis 内存占用过高、响应变慢的问题,就知道该从哪几个方向入手:是大 key 太多,还是过期策略不合理,还是淘汰策略配错了。
第三块可以看事务、发布订阅这些高级特性的边界。很多人会把 Redis 的事务当成关系型数据库的 ACID 事务来用,结果踩坑。课程里会讲清楚 Redis 事务的本质是命令批量执行,不支持回滚,以及 WATCH 机制的原理和局限。发布订阅部分也要搞清楚它和专业消息队列的区别,什么场景下可以用,什么场景下绝对不能用。理解这些特性的边界,比记住命令本身重要得多,能帮你在架构选型时避免很多低级错误。
学完能独立完成的事
学完这门课,你首先能独立负责项目里 Redis 方案的设计和调优。比如给一个电商系统设计缓存架构,你能根据业务场景选择合适的数据类型,设计合理的 key 命名规范和过期策略,预判缓存穿透、击穿、雪崩的风险并给出对应的解决方案。你也能根据业务对数据可靠性的要求,选择合适的持久化策略,配置合理的 RDB 触发时机和 AOF 刷盘策略,在性能和数据安全之间找到平衡点。
其次,你具备独立排查 Redis 常见线上问题的能力。比如 Redis 响应突然变慢,你知道要从慢查询日志、大 key 排查、持久化阻塞、内存淘汰、网络延迟等多个维度逐一排查,而不是只会重启实例。再比如 Redis 内存占用持续上涨,你会用工具分析内存分布,找出是哪些 key 占了空间,是数据结构选型有问题还是过期没生效,然后给出优化方案。这些能力是区分“会用 Redis”和“懂 Redis”的关键,也是中高级后端工程师必备的技能。
另外,你能基于 Redis 独立实现一些常见的业务组件。比如用 SETNX + 过期时间实现分布式锁,并且知道怎么解决锁过期释放、锁误删、重入性这些问题;用有序集合实现排行榜、延时队列;用位图实现签到统计、用户在线状态;用 HyperLogLog 做海量数据的基数统计。这些实现不需要依赖额外的中间件,在很多中小规模场景下比引入专业组件更轻量、更高效。
资料怎么配合练习
学习这门课不要光看不动手,每学完一个模块都要在本地 Redis 实例上做验证。比如学完数据类型的底层编码,就手动创建不同大小的哈希结构,用 OBJECT ENCODING 命令查看它的编码方式,验证 ziplist 转 hashtable 的阈值。学完持久化,就手动触发 RDB 快照和 AOF 重写,观察日志输出和文件变化,甚至可以模拟一下进程崩溃,看看两种方式下数据丢失的情况有什么不同。
学高级特性的时候,可以自己写一些小脚本做测试。比如学事务的时候,写两个客户端同时操作同一个 key,验证 WATCH 的乐观锁效果;学发布订阅的时候,开几个终端分别做发布者和订阅者,体验消息的推送过程,也试试订阅者掉线后重连,看看消息会不会丢失。这些实验花不了多少时间,但能把抽象的原理变成直观的感受,记忆会深刻很多。
最后,建议结合自己手上的真实项目做复盘。比如看看你们项目里 Redis 的用法有没有不合理的地方:是不是所有数据都用字符串存,浪费了很多内存?是不是过期策略配的是 noeviction,导致内存满了直接报错?是不是持久化配置和业务的可靠性要求不匹配?带着问题去课程里找答案,再把学到的优化思路用到实际项目里,这样才能把知识真正变成自己的能力。
课程介绍
“Redis核心技术与实战” 课程旨在深入讲解Redis的内部机制、核心技术以及在实际项目中的应用。这类课程通常面向希望提升自己数据库处理、缓存策略和性能优化能力的开发人员。下面是课程中涵盖的关键内容:
- Redis基础:
- Redis简介:包括Redis的历史、特点和适用场景。
- 数据类型:深入讲解Redis支持的数据类型,如字符串(Strings)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)、哈希(Hashes)等。
- 安装与配置:如何在不同环境中安装Redis,以及基本的配置项。
- Redis高级特性:
- 持久化:讲解RDB(Redis数据库)和AOF(Append Only File)两种持久化机制的工作原理及其优缺点。
- 事务:介绍Redis的事务概念,以及如何使用MULTI、EXEC、WATCH等命令来实现事务。
- 订阅与发布:介绍Redis的Pub/Sub模型,以及如何在应用中实现消息的发布和订阅。
- Lua脚本:如何使用Lua脚本在Redis服务器端执行复杂的操作。
- Redis性能优化:
- 性能监控:使用INFO命令和Redis监控工具来监控Redis的性能。
- 缓存策略:介绍常见的缓存策略,如缓存穿透、缓存雪崩和缓存击穿,以及如何防止它们。
- 数据分片:如何通过数据分片来提高Redis的扩展性和可用性。
- Redis集群与高可用:
- Redis哨兵(Sentinel):介绍Redis哨兵的工作原理和配置方法,实现高可用。
- Redis集群:讲解Redis集群的架构、特点、以及如何搭建和管理一个Redis集群。
- 实战案例:
- 通过实际案例演示如何在项目中应用Redis,包括但不限于会话管理、排行榜、社交网络功能等。
- 安全与维护:
- 讲解如何保证Redis的安全,包括设置密码、使用SSL等。
- Redis的常规维护工作,比如定期备份和恢复。
“Redis核心技术与实战”课程适用于有一定编程基础,希望深入学习Redis并在项目中高效使用它的开发者。通过这类课程的学习,开发者可以更好地理解Redis的内部机制,掌握其高级特性和最佳实践,从而提高应用的性能和可用性。
课程目录
/14-026-马士兵教育-Redis核心技术与实战/
│├─1-Redis入门(安装、全局命令、String、Hash).mp4 416MB
│├─10-Redis集群原理+缓存运用问题.mp4 811.2MB
│├─11-Redis常见问题与大厂运用.mp4 1.1GB
│├─12-Redis设计、实现.mp4 1011.1MB
│├─2-Redis数据结构(List、Set、ZSet和Bitmap与布隆过滤器).mp4 421.3MB
│├─3-Redis高级数据结构(Bitmaps、HyperLogLog、GEO).mp4 406.4MB
│├─4-Redis高级特性(慢查询、Pipeline、事务、Lua).mp4 1.2GB
│├─5-Redis高级特性(发布-订阅、Stream).mp4 435.3MB
│├─6-Redis底层原理(持久化、分布式锁).mp4 1GB
│├─7-Redis高并发高可用–复制.mp4 1.3GB
│├─8-Redis高可用–哨兵.mp4 1.2GB
│├─9-Redis高可用–集群-大厂中的Redis.mp4 1.3GB