Redis——快速入门第三课:真实项目里的缓存完整流程

文章目录

  • [第 3 课:Redis 在真实项目里是怎么用的(缓存全流程)](#第 3 课:Redis 在真实项目里是怎么用的(缓存全流程))
    • 一、先解决一个真实问题(你一定见过)
      • [❓ 问题场景](#❓ 问题场景)
    • [二、Redis 缓存的标准解决方案(核心)](#二、Redis 缓存的标准解决方案(核心))
      • [⭐ 标准流程(一定要记住)](#⭐ 标准流程(一定要记住))
    • [三、一步一步拆解(0 基础可操作)](#三、一步一步拆解(0 基础可操作))
      • [1️⃣ 设计 Key(非常重要)](#1️⃣ 设计 Key(非常重要))
      • [2️⃣ 第一次请求(Redis 里还没数据)](#2️⃣ 第一次请求(Redis 里还没数据))
      • [3️⃣ 查数据库(模拟)](#3️⃣ 查数据库(模拟))
      • [4️⃣ 写入 Redis(一定要设过期)](#4️⃣ 写入 Redis(一定要设过期))
      • [5️⃣ 再次请求(缓存命中)](#5️⃣ 再次请求(缓存命中))
    • 四、为什么一定要设置过期时间?
      • [❌ 不设过期的风险](#❌ 不设过期的风险)
      • [✅ 推荐经验值](#✅ 推荐经验值)
    • [五、缓存更新 & 删除(新手最容易踩坑)](#五、缓存更新 & 删除(新手最容易踩坑))
      • [❓ 数据库更新了,Redis 怎么办?](#❓ 数据库更新了,Redis 怎么办?)
        • [❌ 错误思路:先更新 Redis](#❌ 错误思路:先更新 Redis)
      • [✅ 正确做法(记住这个顺序)](#✅ 正确做法(记住这个顺序))
    • [六、3 个你一定会遇到的"缓存坑"](#六、3 个你一定会遇到的“缓存坑”)
      • [坑 1️⃣:缓存穿透(查不到的数据)](#坑 1️⃣:缓存穿透(查不到的数据))
      • [坑 2️⃣:缓存击穿(热点 key 失效)](#坑 2️⃣:缓存击穿(热点 key 失效))
      • [坑 3️⃣:缓存雪崩(大量 key 同时过期)](#坑 3️⃣:缓存雪崩(大量 key 同时过期))
    • 七、你现在已经能"读懂项目代码"了
    • [八、这一课你必须牢牢记住的 6 点](#八、这一课你必须牢牢记住的 6 点)

Redis 真正"值钱"的一课 ------
👉 Redis 在真实项目里的缓存完整流程

你学完这一课,就能看懂项目、自己设计缓存、不容易踩坑


第 3 课:Redis 在真实项目里是怎么用的(缓存全流程)

目标:
不是背命令,而是知道"什么时候该用 Redis、怎么用才对"


一、先解决一个真实问题(你一定见过)

❓ 问题场景

一个接口:

text 复制代码
GET /user/1001

每次请求都查 MySQL:

  • 数据库压力大
  • 并发一高就扛不住

二、Redis 缓存的标准解决方案(核心)

⭐ 标准流程(一定要记住)

text 复制代码
请求来了
  ↓
先查 Redis
  ↓
有数据 → 直接返回(快)
  ↓
没数据 → 查 MySQL
              ↓
           写入 Redis(设过期)
              ↓
           返回结果

👉 这就是 "Cache Aside Pattern(旁路缓存)"
90% 项目都用这一套


三、一步一步拆解(0 基础可操作)

1️⃣ 设计 Key(非常重要)

不要随便用 key。

❌ 错误示例:

text 复制代码
user

✅ 正确示例:

text 复制代码
user:1001

👉 规则
业务名:主键


2️⃣ 第一次请求(Redis 里还没数据)

bash 复制代码
get user:1001
# (nil)

说明缓存没命中。


3️⃣ 查数据库(模拟)

假设数据库返回:

json 复制代码
{id:1001,name:"张三",age:18}

4️⃣ 写入 Redis(一定要设过期)

bash 复制代码
set user:1001 "{id:1001,name:张三,age:18}" ex 300

含义:

  • 缓存 5 分钟
  • 避免脏数据长期存在

5️⃣ 再次请求(缓存命中)

bash 复制代码
get user:1001

👉 不再访问数据库


四、为什么一定要设置过期时间?

❌ 不设过期的风险

  • 数据永远不更新
  • 内存越用越多
  • 出问题不好兜底

✅ 推荐经验值

场景 TTL
用户信息 5~10 分钟
商品信息 5~30 分钟
验证码 30~60 秒
登录状态 30 分钟~2 小时

五、缓存更新 & 删除(新手最容易踩坑)

❓ 数据库更新了,Redis 怎么办?

❌ 错误思路:先更新 Redis

千万别这么干


✅ 正确做法(记住这个顺序)

text 复制代码
1. 更新数据库
2. 删除 Redis 缓存

示例:

bash 复制代码
del user:1001

👉 下次请求会自动重新写缓存


六、3 个你一定会遇到的"缓存坑"

坑 1️⃣:缓存穿透(查不到的数据)

问题

一直查不存在的 userId → 每次都打数据库

解决思路(先知道)

  • 查不到也缓存(短 TTL)
  • 或参数校验

坑 2️⃣:缓存击穿(热点 key 失效)

问题

热门 key 过期瞬间 → 所有请求都打数据库

解决思路(先知道)

  • TTL 随机
  • 加锁

坑 3️⃣:缓存雪崩(大量 key 同时过期)

问题

Redis 集体失效 → 数据库扛不住

解决思路(先知道)

  • 过期时间打散
  • 限流 / 熔断

👉 现在只要知道名字即可,后面再学


七、你现在已经能"读懂项目代码"了

看到这样的逻辑:

text 复制代码
if (redis.has(key)) {
    return redis.get(key);
}
data = db.query();
redis.set(key, data, 300);
return data;

你应该能立刻反应:

"这是标准缓存旁路模式"


八、这一课你必须牢牢记住的 6 点

  1. Redis 是 数据库前面的一层缓存
  2. 永远 先查 Redis
  3. 查不到才查数据库
  4. 写 Redis 一定要设 TTL
  5. 更新数据 → 删缓存
  6. key 设计很重要(user:1001)
相关推荐
今晚务必早点睡2 小时前
Redis——快速入门第一课:了解redis
数据库·redis·缓存
-Xie-2 小时前
Redis(十五)——内存过期/淘汰策略
数据库·redis·缓存
lhrimperial2 小时前
Redis核心技术深度解析
数据库·redis
小股虫2 小时前
Tair Java实操手册:从零开始的缓存中间件入门指南
java·缓存·中间件
gugugu.2 小时前
Redis事务全面解析
数据库·redis·bootstrap
Hello.Reader2 小时前
KeyDB 一台“40 英尺卡车”式的 Redis 兼容高性能缓存
数据库·redis·缓存
最贪吃的虎2 小时前
网络是怎么传输的:从底层协议到浏览器访问网站的全过程剖析
java·开发语言·网络·http·缓存
爱好读书2 小时前
AI生成ER图|SQL生成ER图
数据库·人工智能·sql·毕业设计·课程设计
小尧嵌入式2 小时前
Linux网络介绍网络编程和数据库
linux·运维·服务器·网络·数据库·qt·php