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 是数据持久化层。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值