JAVA 项目教程《黑马商城-Redis 篇》,分布式架构项目,从开发到部署
一、参考资料
【黑马程序员SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)】 https://www.bilibili.com/video/BV1S142197x7/?p=142\&share_source=copy_web\&vd_source=855891859b2dc554eace9de3f28b4528
二、笔记总结
01、搭建主从集群
















02、自从同步原理




03、主从集群优化



04、哨兵原理





05、搭建哨兵集群







shell
# 老版本DockerCompose
docker-compose down
# 新版本Docker
docker compose down


shell
sentinel announce-ip "192.168.150.101"
sentinel monitor hmaster 192.168.150.101 7001 2
sentinel down-after-milliseconds hmaster 5000
sentinel failover-timeout hmaster 60000

shell
version: "3.2"
services:
r1:
image: redis
container_name: r1
network_mode: "host"
entrypoint: ["redis-server", "--port", "7001"]
r2:
image: redis
container_name: r2
network_mode: "host"
entrypoint: ["redis-server", "--port", "7002", "--slaveof", "192.168.150.101", "7001"]
r3:
image: redis
container_name: r3
network_mode: "host"
entrypoint: ["redis-server", "--port", "7003", "--slaveof", "192.168.150.101", "7001"]
s1:
image: redis
container_name: s1
volumes:
- /root/redis/s1:/etc/redis
network_mode: "host"
entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27001"]
s2:
image: redis
container_name: s2
volumes:
- /root/redis/s2:/etc/redis
network_mode: "host"
entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27002"]
s3:
image: redis
container_name: s3
volumes:
- /root/redis/s3:/etc/redis
network_mode: "host"
entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27003"]

shell
# 老版本 Docker
docker-compose up -d
# 新版本 Docker
docker compose up -d








06、搭建分片集群






shell
version: "3.2"
services:
r1:
image: redis
container_name: r1
network_mode: "host"
entrypoint: ["redis-server", "--port", "7001", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]
r2:
image: redis
container_name: r2
network_mode: "host"
entrypoint: ["redis-server", "--port", "7002", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]
r3:
image: redis
container_name: r3
network_mode: "host"
entrypoint: ["redis-server", "--port", "7003", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]
r4:
image: redis
container_name: r4
network_mode: "host"
entrypoint: ["redis-server", "--port", "7004", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]
r5:
image: redis
container_name: r5
network_mode: "host"
entrypoint: ["redis-server", "--port", "7005", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]
r6:
image: redis
container_name: r6
network_mode: "host"
entrypoint: ["redis-server", "--port", "7006", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]

shell
# 进入任意节点容器
docker exec -it r1 bash
# 然后,执行命令
redis-cli --cluster create --cluster-replicas 1 \
192.168.19.103:7001 192.168.19.103:7002 192.168.19.103:7003 \
192.168.19.103:7004 192.168.19.103:7005 192.168.19.103:7006


07、散列插槽





08、Redis 数据结构-RedisObject



09、Redis 数据结构-SkipList


10、Redis 数据结构-SortedSet


11、Redis 内存回收-过期 KEY 处理



12、Redis 内存回收-内存淘汰策略


13、Redis 缓存-缓存一致性





14、Redis 缓存-缓存穿透



15、Redis 缓存-缓存雪崩

16、Redis 缓存-缓存击穿



三、AI 嘚吧(直接忽略)
黑马商城-Redis篇:分布式架构项目从开发到部署
本教程聚焦于电商场景下Redis的核心应用,以"黑马商城"为实战项目,系统讲解如何利用Redis构建高性能、高可用的分布式系统。内容涵盖从环境搭建、核心数据结构应用到分布式锁、缓存设计等高级实战技巧,并结合SpringBoot与Redisson等主流框架,深入剖析缓存穿透、雪崩、击穿等问题的解决方案及缓存一致性策略。通过商品缓存、购物车管理、秒杀下单等电商核心业务的代码实现,帮助开发者掌握企业级缓存架构的设计与落地能力,为构建现代化电商系统奠定坚实基础。
核心内容
- 环境准备与基础操作:使用Docker快速部署Redis单机与集群环境,集成SpringDataRedis,掌握String、Hash、List、Set等数据类型的Java操作API。
- 缓存设计与优化:实战商品详情页缓存、分类列表缓存的读写逻辑,设计高效的Key命名规范与过期策略,引入JSON序列化提升复杂对象存储效率。
- 缓存问题解决方案:针对缓存穿透,实现布隆过滤器与空值缓存;针对缓存雪崩,采用随机过期时间与高可用集群部署;针对缓存击穿,结合Redisson实现分布式锁与互斥重建机制。
- 分布式会话与购物车:利用Redis统一存储用户Session,解决微服务集群下的登录状态共享问题;实现基于Hash结构的轻量级购物车功能,支持快速增删改查。
- 高并发场景实战:在秒杀下单流程中,通过Redis预减库存、Lua脚本保证原子性,结合消息队列实现异步下单,有效应对瞬时高并发流量。
- 监控与生产规范:集成Redis监控工具,实时观察内存与命中率,制定生产环境下的安全配置、持久化策略与性能调优指南。
技术亮点
- 真实电商场景驱动:所有知识点均围绕"黑马商城"的实际业务展开,贴近企业真实需求。
- 代码与架构并重:不仅提供可运行的代码示例,更强调缓存架构的设计思想与扩展性考量。
- 覆盖全链路问题:从缓存读写到一致性、高并发处理,全面覆盖Redis在生产环境中的典型挑战与最佳实践。