这是一个非常系统全面的Redis实战课。课程内容从基础入门,到企业应用实战,再到底层原理和源码分析,旨在帮助你全方位掌握Redis技术。课程不仅讲解基础指令,还结合指令剖析工作原理,并穿插了23个企业真实应用场景案例,让你能学以致用。
一、 项目核心内容介绍
本项目的核心实战部分围绕一个名为“黑马点评”的系统展开,涵盖了大量高并发和复杂的企业级业务场景:
- 缓存及高并发优化:在“商户查询缓存”业务中,你将学习到企业级缓存的使用技巧,并动手通过互斥锁、逻辑过期等方案解决缓存穿透、缓存雪崩、缓存击穿等高并发难题。
- 优惠券秒杀与分布式锁:项目中设计了特价优惠券抢购的场景。为了解决高并发下的“超卖”和“一人一单”问题,你将学习并使用乐观锁,随后深入应用Redis分布式锁,并使用业界主流的 Redisson 客户端解决锁的可重入、重试、超时释放和主从一致性等问题。为了进一步优化秒杀性能,还会结合Redis计数器、Lua脚本和Redis的Stream消息队列实现异步秒杀。
- 社交互动功能(达人探店与好友关注) :基于Redis丰富的结构实现点赞、基于SortedSet实现点赞排行榜;基于Set实现关注、取消关注以及共同关注;并通过Timeline模式实现类似朋友圈的**Feed流(推拉模式)**消息推送。
- 地理位置与数据统计:利用Redis的GEO(地理坐标)数据结构实现“附近的商户”功能;利用BitMap(位图)实现用户的按月连续签到统计;利用HyperLogLog实现网站的UV(独立访客)统计。
- 高级架构与底层原理:在实战之后,课程还会带你搭建Redis高级架构,包括持久化(RDB与AOF)、主从集群、Sentinel(哨兵集群)以及分片集群。同时你将学习结合Nginx、OpenResty、Lua脚本和Tomcat本地JVM实现高性能的多级缓存架构。
二、 怎么学习这个项目?
为了顺利完成这个项目的学习,你需要做好以下准备和学习规划:
1. 确认前置知识与环境准备
- 学习要求:你需要具备一定的Java基础,有使用Spring、SpringBoot、SpringMVC、Mybatis的开发经验,并且最好有一定的Linux基础操作能力。
- 环境准备:准备一台Windows操作系统的电脑,安装JDK8、IDEA开发工具、MySQL 5.7及以上版本,并安装VMware配合CentOS7虚拟机来部署Linux环境下的Redis。
2. 建议的学习路径
- 第一阶段:夯实基础(初识与命令) 面向如果是完全不懂Redis的新手,先从Linux环境下安装Redis开始。学习五大基础数据类型(String、Hash、List、Set、SortedSet)以及通用命令。贴心建议: 各种命令不需要死记硬背,学会使用
help命令或查阅官方文档即可。还要熟悉Java客户端(特别是SpringDataRedis的配置和自定义序列化)。 - 第二阶段:项目实战(黑马点评) 这一步是整个课程的精髓。你需要将课前资料中提供的
hmdp.sql导入MySQL,将前端Nginx(nginx-1.18.0)工程和后端hm-dianping源码导入IDEA并运行起来。 在跟随视频敲代码的过程中,重点理解分布式锁的演进过程(从原生Setnx到Lua脚本保证原子性,再到引入Redisson),以及缓存一致性和并发安全的处理逻辑。 - 第三阶段:攻克高级与架构特性 当单体Redis无法满足需求时,学习如何搭建主从复制、哨兵和分片集群来解决数据丢失、并发读写和海量存储的问题。在这一阶段,注重理解集群的工作原理、选主机制以及哈希插槽(Hash Slot)的底层逻辑。
- 第四阶段:底层原理与多级缓存(进阶大牛) 深入了解Redis的IO多路复用网络模型、各种底层数据结构(如跳表SkipList、RedisObject)以及内存淘汰策略(LRU/LFU)。如果有余力,可以学习如何使用Lua和OpenResty编写Nginx层的业务逻辑,完成高吞吐的多级缓存开发。
只要你坚持“理论结合实战、由浅入深”的原则,动手将这20多个场景的源码逐一敲过并理解,就能大幅增加你的企业实战经验。