Redis——快速入门第四课:Redis + Spring Boot 实战(从 0 到能用)

文章目录

  • [第 4 课:Redis + Spring Boot 实战(从 0 到能用)](#第 4 课:Redis + Spring Boot 实战(从 0 到能用))
    • 一、先说清楚一件事(非常重要)
      • [在 Spring Boot 里:](#在 Spring Boot 里:)
    • [二、第一步:application.yml 怎么配 Redis(核心)](#二、第一步:application.yml 怎么配 Redis(核心))
      • [1️⃣ 最常见的 Redis 配置(你一定会见到)](#1️⃣ 最常见的 Redis 配置(你一定会见到))
      • 每一项是什么意思(必须懂)
      • [2️⃣ Docker Redis 怎么配?](#2️⃣ Docker Redis 怎么配?)
    • [三、第二步:Spring Boot 是怎么"连上 Redis 的"?](#三、第二步:Spring Boot 是怎么“连上 Redis 的”?)
    • [四、第三步:RedisTemplate 是什么?(一定要搞懂)](#四、第三步:RedisTemplate 是什么?(一定要搞懂))
      • [1️⃣ RedisTemplate 的角色](#1️⃣ RedisTemplate 的角色)
      • [2️⃣ 最常见的两种 Template](#2️⃣ 最常见的两种 Template)
    • [五、第四步:在代码里真正用 Redis(重点)](#五、第四步:在代码里真正用 Redis(重点))
      • [1️⃣ 注入 Redis 客户端](#1️⃣ 注入 Redis 客户端)
      • [2️⃣ 最基本:set / get](#2️⃣ 最基本:set / get)
      • [3️⃣ 设置过期时间(项目必用)](#3️⃣ 设置过期时间(项目必用))
      • [4️⃣ 判断 key 是否存在(排错神器)](#4️⃣ 判断 key 是否存在(排错神器))
      • [5️⃣ 删除缓存(非常重要)](#5️⃣ 删除缓存(非常重要))
    • 六、真实项目里的"标准缓存代码模板"(重点背这个)
    • [七、RedisTemplate 常见操作速查(够你用)](#七、RedisTemplate 常见操作速查(够你用))
    • [八、新手 3 个必踩坑(提前帮你避)](#八、新手 3 个必踩坑(提前帮你避))
      • [❌ 坑 1:RedisTemplate 报错连不上](#❌ 坑 1:RedisTemplate 报错连不上)
      • [❌ 坑 2:存进去是乱码](#❌ 坑 2:存进去是乱码)
      • [❌ 坑 3:Redis 有值,但代码取不到](#❌ 坑 3:Redis 有值,但代码取不到)
    • 九、你现在已经具备的能力(非常重要)

第 4 课:Redis + Spring Boot 实战(从 0 到能用)

学完这一课,你就能做到:

✅ 看懂项目里的 Redis 配置

✅ 知道 RedisTemplate / StringRedisTemplate 是干嘛的

✅ 自己在代码里 set / get / del

✅ 不再把 Redis 当"黑盒"


一、先说清楚一件事(非常重要)

在 Spring Boot 里:

  • Redis 服务端
    👉 你服务器上跑的 Redis(本地 / Docker 都行)
  • Redis 客户端
    👉 Spring Boot 程序里的 RedisTemplate

Spring Boot 本身不带 Redis 服务端

它只是一个 Redis 客户端程序


二、第一步:application.yml 怎么配 Redis(核心)

1️⃣ 最常见的 Redis 配置(你一定会见到)

yaml 复制代码
spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password:
    database: 0
    timeout: 3000

每一项是什么意思(必须懂)

配置项 含义
host Redis 地址
port Redis 端口(默认 6379)
password Redis 密码(没设就空)
database Redis 库号(0~15)
timeout 连接超时时间(毫秒)

📌 90% 新手 Redis 连不上,都是这里配错


2️⃣ Docker Redis 怎么配?

如果 Redis 跑在 当前服务器 Docker 里,并且:

bash 复制代码
-p 6379:6379

👉 配置 完全不用改,还是:

yaml 复制代码
host: 127.0.0.1
port: 6379

三、第二步:Spring Boot 是怎么"连上 Redis 的"?

你不需要自己写连接代码

Spring Boot 在启动时会:

text 复制代码
读取 application.yml
  ↓
创建 Redis 连接工厂
  ↓
创建 RedisTemplate Bean

只要配置对了,你就能直接用。


四、第三步:RedisTemplate 是什么?(一定要搞懂)

1️⃣ RedisTemplate 的角色

RedisTemplate = Java 世界里的 redis-cli

  • redis-cli:命令行操作 Redis
  • RedisTemplate:Java 代码操作 Redis

2️⃣ 最常见的两种 Template

类型 用途
RedisTemplate 通用(Object)
StringRedisTemplate 专门存字符串(最常用)

👉 新手优先用 StringRedisTemplate


五、第四步:在代码里真正用 Redis(重点)

1️⃣ 注入 Redis 客户端

java 复制代码
@Autowired
private StringRedisTemplate stringRedisTemplate;

2️⃣ 最基本:set / get

java 复制代码
stringRedisTemplate.opsForValue()
        .set("name", "zhangsan");

String value = stringRedisTemplate.opsForValue()
        .get("name");

👉 等价于:

bash 复制代码
set name zhangsan
get name

3️⃣ 设置过期时间(项目必用)

java 复制代码
stringRedisTemplate.opsForValue()
        .set("code", "123456", 60, TimeUnit.SECONDS);

👉 等价于:

bash 复制代码
set code 123456 ex 60

4️⃣ 判断 key 是否存在(排错神器)

java 复制代码
Boolean exists = stringRedisTemplate.hasKey("code");

5️⃣ 删除缓存(非常重要)

java 复制代码
stringRedisTemplate.delete("user:1001");

👉 更新数据库后一定会用到


六、真实项目里的"标准缓存代码模板"(重点背这个)

这是你以后最常写允许"直接套用"的逻辑

java 复制代码
String key = "user:" + userId;

// 1. 先查 Redis
String cache = stringRedisTemplate.opsForValue().get(key);
if (cache != null) {
    return cache;
}

// 2. 查数据库
String dbData = queryFromDb(userId);

// 3. 写 Redis(设过期)
stringRedisTemplate.opsForValue()
        .set(key, dbData, 300, TimeUnit.SECONDS);

return dbData;

👉 90% Redis 缓存代码长这样


七、RedisTemplate 常见操作速查(够你用)

String(Value)

java 复制代码
opsForValue().set()
opsForValue().get()

Hash(对象)

java 复制代码
opsForHash().put("user:1", "name", "zhangsan");
opsForHash().get("user:1", "name");

List(队列)

java 复制代码
opsForList().leftPush("queue", "order1");
opsForList().rightPop("queue");

八、新手 3 个必踩坑(提前帮你避)

❌ 坑 1:RedisTemplate 报错连不上

👉 先检查:

bash 复制代码
redis-cli ping

如果这里不通,Spring Boot 一定不通。


❌ 坑 2:存进去是乱码

原因:

  • 使用了 RedisTemplate(Object)
  • 序列化方式不一致

👉 新手优先用 StringRedisTemplate


❌ 坑 3:Redis 有值,但代码取不到

常见原因:

  • key 拼错
  • 多了前缀
  • 不同 database

👉 用:

bash 复制代码
keys *

对照排查。


九、你现在已经具备的能力(非常重要)

现在的你已经可以:

  • 看懂 application.yml 里的 Redis
  • 明白 RedisTemplate 是客户端
  • 在 Java 代码里用 Redis 做缓存
  • 看懂项目里 80% Redis 代码
相关推荐
用户3074596982071 天前
Redis 延时队列详解
redis
烤代码的吐司君1 天前
Redis 数据结构 ZSet, BIT, HyperLogLog,Geo 空间数据
redis·后端
Flittly1 天前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
Flynt2 天前
从Spring Boot 4.0升到4.1,我在Maven和gRPC上栽了跟头
java·spring boot·后端
掉鱼的猫3 天前
Spring Boot → Solon 注解迁移实战指南:一张对照表说清楚
java·spring boot
leeyi3 天前
Checkpoint 机制:Agent 怎么在断电后接着跑
redis·aigc·agent
人活一口气4 天前
Spring Boot与AIGC的完美结合:从零搭建智能内容生成平台
java·spring boot·aigc
云技纵横4 天前
一个 @Async 让循环依赖暴雷:Spring 代理的暗坑
redis
犯困蛋挞yy5 天前
用Claude快速解决Redis代码报错反复无解的问题
redis
java小白小7 天前
SpringBoot(01): 初识SpringBoot,从Spring的痛点说起
spring boot