MySQL 系统学习 第六阶段:Redis + 缓存 + 高并发设计 第十章:Redis 综合企业项目实战

一、企业项目 Redis 架构

典型后端架构:

复制代码
复制代码
             用户请求

                ↓

            NestJS 服务

                ↓

        ┌────────────┐
        │   Redis    │
        │  缓存层    │
        └────────────┘

                ↓

            MySQL

                ↓

            持久化数据

Redis 作为:

MySQL 和业务服务之间的高速缓存层。


二、项目一:用户信息缓存

场景

用户访问个人中心:

复制代码
复制代码
GET /user/profile

第一次请求

流程:

复制代码
复制代码
查询 Redis

↓

不存在

↓

查询 MySQL

↓

保存 Redis

↓

返回

Redis:

Key:

复制代码
复制代码
user:info:1001

Value:

复制代码
复制代码
{
 "id":1001,
 "name":"Tom",
 "age":20
}

TTL:

复制代码
复制代码
30分钟

后续请求

直接:

复制代码
复制代码
Redis

↓

返回用户信息

减少数据库压力。


三、项目二:商品详情缓存

场景

商品详情:

复制代码
复制代码
/product/detail/100

Redis:

Key:

复制代码
复制代码
product:detail:100

Value:

商品 JSON。


读取:

复制代码
复制代码
Redis

↓

命中

↓

返回

更新商品:

例如修改价格:

正确流程:

复制代码
复制代码
更新 MySQL

↓

删除 Redis

↓

下一次重新加载

四、项目三:登录 Token 管理

登录

用户:

复制代码
复制代码
user:1001

生成 JWT:

复制代码
复制代码
xxxxx

保存:

Redis:

复制代码
复制代码
token:user:1001

请求:

复制代码
复制代码
JWT

↓

Redis检查

↓

允许访问

退出:

删除:

复制代码
复制代码
DEL token:user:1001

立即失效。


五、项目四:文章点赞系统

需求

文章:

复制代码
复制代码
id=100

用户:

复制代码
复制代码
user=1

Redis:

Set:

复制代码
复制代码
article:like:100

保存:

复制代码
复制代码
user:1
user:2
user:3

点赞:

复制代码
复制代码
SADD article:like:100 user:1

取消:

复制代码
复制代码
SREM article:like:100 user:1

数量:

复制代码
复制代码
SCARD article:like:100

六、项目五:排行榜系统

例如:

商品销量排行榜:

复制代码
复制代码
商品A 1000

商品B 900

商品C 800

使用:

ZSet

Key:

复制代码
复制代码
product:sales:rank

增加销量:

复制代码
复制代码
ZINCRBY product:sales:rank 1 productA

获取排行:

复制代码
复制代码
ZREVRANGE product:sales:rank 0 9

获取 Top10。


七、项目六:秒杀库存扣减

问题

库存:

复制代码
复制代码
10

10000 人同时购买。


错误:

复制代码
复制代码
查询库存

↓

库存>0

↓

扣减

会超卖。


方案:

Redis + 分布式锁。

流程:

复制代码
复制代码
请求

↓

获取锁

↓

检查库存

↓

扣减 Redis库存

↓

创建订单

↓

释放锁

Redis:

库存:

复制代码
复制代码
stock:product:100

数量:

复制代码
复制代码
10

八、项目七:购物车

购物车:

用户:

复制代码
复制代码
1001

商品:

复制代码
复制代码
商品1 数量2
商品2 数量3

使用 Hash:

Key:

复制代码
复制代码
cart:user:1001

数据:

复制代码
复制代码
product:1 → 2

product:2 → 3

九、项目八:验证码

短信验证码:

Key:

复制代码
复制代码
sms:code:13888888888

Value:

复制代码
复制代码
123456

TTL:

复制代码
复制代码
5分钟

发送:

复制代码
复制代码
SET sms:code:xxx 123456 EX 300

十、企业 Redis Key 规范

推荐:

格式:

复制代码
复制代码
业务:模块:ID

例如:

用户:

复制代码
复制代码
user:info:1001

订单:

复制代码
复制代码
order:detail:2001

商品:

复制代码
复制代码
product:detail:3001

点赞:

复制代码
复制代码
article:like:100

十一、企业 Redis 使用原则

1. Redis 不作为最终数据库

错误:

复制代码
复制代码
只存 Redis

正确:

复制代码
复制代码
Redis

缓存

↓

MySQL

真实数据

2. 热点数据优先缓存

例如:

  • 商品详情
  • 首页数据
  • 热门文章

3. 设置 TTL

避免:

  • 数据永久存在
  • 内存爆炸

4. 重要操作保证一致性

例如:

订单:

复制代码
复制代码
MySQL事务

+

Redis删除

十二、完整企业架构总结

复制代码
复制代码
                 用户

                  ↓

              NestJS API

                  ↓

        ┌────────────────┐
        │ Redis          │
        │                │
        │ Token          │
        │ Cache          │
        │ Lock           │
        │ Rank           │
        └────────────────┘

                  ↓

              MySQL

                  ↓

              数据持久化

十三、第六阶段总结

内容 掌握能力
Redis基础 理解缓存工具
数据结构 选择正确结构
缓存设计 提升系统性能
缓存问题 解决高并发异常
Token 企业登录管理
分布式锁 解决并发冲突
高级应用 点赞、排行、购物车
高可用 生产部署
综合实战 企业架构设计

本章一句话总结

Redis 在企业项目中不是替代 MySQL,而是作为高速缓存层,解决高并发访问、状态管理和业务性能问题。


思考题(精简回答)

  1. 用户信息为什么适合使用 Redis 缓存?
    因为用户信息:查询频繁、修改较少。放 Redis 可以减少 MySQL 查询压力,提高访问速度。

  2. 商品修改后为什么要删除 Redis,而不是直接修改 Redis? 因为 Redis 只是缓存,MySQL 才是真实数据。修改 MySQL 后删除缓存,下次查询重新加载,可以降低缓存和数据库不一致风险。

  3. 登录系统中 Redis 和 JWT 分别负责什么?
    JWT :负责身份认证,保存用户身份信息。
    Redis:负责管理 Token 状态,例如退出登录、强制下线、Token 过期。

  4. 点赞为什么使用 Set?
    因为Set:自动去重、判断用户是否点赞速度快。可以保证一个用户只能点赞一次

  5. 排行榜为什么使用 ZSet?
    因为 ZSet:分数、自动排序。可以快速实现排名、Top N 查询。

  6. 秒杀库存为什么需要 Redis + 分布式锁?
    Redis:供高速库存访问、减少数据库压力
    分布式锁:保证同一时间只有一个请求修改库存、防止超卖

  7. Redis 和 MySQL 在企业项目中是什么关系?
    Redis 是缓存层,MySQL 是数据持久化层。

相关推荐
Random Glow2 小时前
二级索引与回表:一次回表到底多贵
数据库·mysql·性能优化·innodb·索引
辣知2 小时前
辣知·化智92 《山海经》里的史前密码
学习
鬼手点金2 小时前
KV Cache 未必是一次性的:可编辑、可组合的“笔记”
java·人工智能·笔记·学习·自动化·1024程序员节
MetaLite3 小时前
Spring 同一个类里调用 @CacheEvict,为什么缓存没清掉?
java·spring·缓存
hweiyu003 小时前
Redis命令:SMOVE
redis·缓存
可乐ea3 小时前
Agent 隔离为什么失效:CPU 缓存成了跨机器信道
缓存·ai智能体·红队测试·沙箱安全·agent隔离·侧信道
sunburn-3 小时前
数据库聚合查询完整教程:从基础函数到实战统计
java·数据库·mysql·数据库开发
kyrie_sakura3 小时前
大模型学习18 大模型学习 - LangChain2_Model I/O
学习·自然语言处理
宝绿特塑业再生科技4 小时前
板材收缩率不稳,户外家具装配尺寸为何对不上:从切割尺寸变化到接缝不一的系统性排查与对策
笔记·科技·学习·生活·户外家具·hdpe再生颗粒·hdpe
~城南花已开~5 小时前
Intel E810 SR-IOV VF Spoofcheck 防伪造测试-KVM3
服务器·网络·笔记·学习·ubuntu·etl工程师