第十四课 · 实战篇:Redis 缓存系统落地指南(Spring Boot 从 0 到可用)

上一篇我们讲清了 Redis 在后端的定位:
它不是数据库,而是系统的性能调节器与状态中心。

这一篇不谈概念,直接落地:

做一个 最小可运行缓存系统

目标只有四件事:

  • 查询接口缓存
  • 缓存失效策略
  • 防缓存穿透
  • 登录态缓存

一、准备环境

1. 启动 Redis(本地或服务器)

Mac / Linux:

复制代码
redis-server

测试连接:

复制代码
redis-cli ping

返回 PONG 说明成功。

2. Spring Boot 引入依赖

XML 复制代码
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

3. application.yml 配置

bash 复制代码
spring:
  redis:
    host: 127.0.0.1
    port: 6379

二、第一个缓存:查询接口

场景

bash 复制代码
查商品详情

逻辑目标:

bash 复制代码
先查 Redis
没有 → 查数据库
查到 → 回填 Redis

示例代码(伪代码逻辑)

java 复制代码
public Product getProduct(Long id) {
    String key = "product:" + id;

    // 1. 查缓存
    Product p = redis.get(key);
    if (p != null) return p;

    // 2. 查数据库
    p = db.query(id);

    // 3. 回填缓存
    redis.set(key, p, 10分钟);

    return p;
}

效果:

  • 第一次慢
  • 后面极快

三、缓存失效策略

缓存不是永久的,否则数据会脏。

常见策略三种:

1. TTL 自动过期(最常用)

java 复制代码
redis.set(key, value, 600秒);

2. 更新时主动删除

java 复制代码
更新商品 → 删除缓存

3. 延迟双删(进阶)

java 复制代码
更新 → 删除缓存 → 延迟1秒再删一次

用于高并发一致性。

四、防缓存穿透(必须会)

问题:

java 复制代码
用户查一个不存在的 ID
每次都打数据库

解决:

空值缓存

java 复制代码
if (db查不到) {
  redis.set(key, "null", 60秒);
}

五、登录态缓存(高频场景)

Redis 非常适合存登录状态。

模型:

java 复制代码
userId → token
token → 状态

伪代码:

java 复制代码
loginSuccess(userId, token) {
  redis.set("token:" + token, userId, 7天);
}

实现能力:

  • 强制下线
  • 单点登录
  • 多端控制

六、简单限流(加分项)

场景:

java 复制代码
登录接口防刷

逻辑:

java 复制代码
count = redis.incr(ipKey);
if (count == 1) redis.expire(ipKey, 60秒);
if (count > 10) 拒绝访问;

七、实战结构图

java 复制代码
浏览器
   ↓
Spring Boot
   ↓
Redis ← 缓存 / 登录态 / 限流
   ↓
MySQL

Redis 在这里承担的是:

  • 查询加速
  • 状态存储
  • 并发控制

八、工程级注意事项

问题 解决
内存爆炸 设置 TTL
Key 混乱 命名规范
数据不一致 更新删除缓存
穿透攻击 空值缓存

一句话终极理解

Redis 不是用来存数据的,
而是用来让系统"更快、更稳、更抗压"的。

相关推荐
源码宝11 小时前
基于 SpringBoot + Vue 的医院随访系统:技术架构与功能实现
java·vue.js·spring boot·架构·源码·随访系统·随访管理
虹科网络安全12 小时前
艾体宝新闻|Redis 月度更新速览:2026 年 3 月
数据库·redis·缓存
1892280486113 小时前
EMMC32G-TA28闪存EMMCH26M78103CCR
大数据·人工智能·缓存
空中海13 小时前
Spring Boot 专家级面试题库
spring boot·后端·面试
y = xⁿ14 小时前
Redis八股学习日记:布隆过滤器
数据库·redis·学习
空中海14 小时前
第二篇:注册中心篇 — Nacos 与 Eureka 服务注册发现
spring boot·云原生·eureka
直奔標竿14 小时前
SpringAI + RAG + MCP + Agent 零基础全栈实战(完结篇)| 27课完整汇总,Java开发者AI转型必看
java·开发语言·人工智能·spring boot·后端·spring
逍遥德15 小时前
SpringBoot数据库连接池HikariCP,Druid,Tomcat JDBC,DBCP2,c3p0配置使用
数据库·spring boot·tomcat
学术阿凡提15 小时前
Spring Boot 集成 Fastjson2 完整教程:从入门到避坑
spring boot·安全·json
也许明天y16 小时前
LangChain4j + Spring Boot 多智能体协调架构原理深度解析
spring boot·后端·agent