当前位置: 首页 > news >正文

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

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

这一篇不谈概念,直接落地:
做一个最小可运行缓存系统

目标只有四件事:

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

一、准备环境

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

Mac / Linux:

redis-server

测试连接:

redis-cli ping

返回PONG说明成功。

2. Spring Boot 引入依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

3. application.yml 配置

spring: redis: host: 127.0.0.1 port: 6379

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

场景

查商品详情

逻辑目标:

先查 Redis 没有 → 查数据库 查到 → 回填 Redis

示例代码(伪代码逻辑)

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 自动过期(最常用)

redis.set(key, value, 600秒);

2. 更新时主动删除

更新商品 → 删除缓存

3. 延迟双删(进阶)

更新 → 删除缓存 → 延迟1秒再删一次

用于高并发一致性。

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

问题:

用户查一个不存在的 ID 每次都打数据库

解决:

空值缓存

if (db查不到) { redis.set(key, "null", 60秒); }

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

Redis 非常适合存登录状态。

模型:

userId → token token → 状态

伪代码:

loginSuccess(userId, token) { redis.set("token:" + token, userId, 7天); }

实现能力:

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

六、简单限流(加分项)

场景:

登录接口防刷

逻辑:

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

七、实战结构图

浏览器 ↓ Spring Boot ↓ Redis ← 缓存 / 登录态 / 限流 ↓ MySQL

Redis 在这里承担的是:

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

八、工程级注意事项

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

空值缓存

一句话终极理解

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

http://www.jsqmd.com/news/355803/

相关文章:

  • P2004 领地选择
  • 2026电压力锅哪个牌子质量好?真实用户口碑推荐 - 品牌排行榜
  • 2026高性价比茅台镇酱酒推荐:好喝不贵的茅香佳酿 - 速递信息
  • 2026电饭煲什么牌子的好用质量好?实测推荐 - 品牌排行榜
  • 2026电压力锅哪个牌子最好最安全?口碑推荐榜 - 品牌排行榜
  • 第 167 场双周赛 / 第 471 场周赛 - 实践
  • 2026国产算力新周期:DeepSeek实战适配英伟达H200,引领大模型训练效率跃升
  • uni-app——uni-app Tab切换导致页面报错的问题排查与解决
  • 从 RestTemplate 到 OpenFeign,再到 WebClient/RestClient:Spring 调用链的进化与最佳实践
  • uni-app—— uni-app 小程序页面栈超限导致跳转失败的解决方案
  • SW零件绘制之旋转实体
  • OLEDB连接对象介绍(一) - 实践
  • uni-app——uni-app 小程序 Loading 遮罩卡死页面的排查与最佳实践
  • SpeedrunEthereum
  • 2026养生壶最建议买的品牌推荐及选购参考 - 品牌排行榜
  • 游戏大厂 FPS 射击游戏高精度物理同步方案详解(大白话、生动版)
  • nvm安装使用
  • 数据库的介绍、安装、单表
  • MindMap部署
  • ByteDance研究团队推出评估AI模型深度研究能力的全新基准
  • UC Davis携手Google DeepMind:让AI模型学会“看重点“的训练方法
  • DS 大大大大训练
  • 腾讯混元团队:AI智能体如何学会真正的“深谋远虑“?
  • Vue源码解析
  • 2026年北海管道疏通服务评测推荐:专业疏通服务排行榜单深度解析与选择指南 - 品牌推荐
  • 机器学习的商业化变现
  • 移植Google Gemini Nano到RK3588 NPU,实现高效边缘推理
  • 20260201决策单调性专题作业 - Link
  • Java AI 工程化:基于 MCP 协议的自动化发帖实践-1770465571465
  • 机器学习 —— 数据泄露