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 代码
相关推荐
苹果醋32 小时前
vue + iview + vue-i18n中英翻译
java·运维·spring boot·mysql·nginx
Miss_Chenzr2 小时前
Springboot文化艺术发展有限公司4rl42(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
Knight_AL2 小时前
Redis Lua 脚本为什么天然具备原子性?
数据库·redis·lua
wtrees_松阳2 小时前
分布式锁实战指南:Redis、ZooKeeper、etcd 三大方案深度对比与避坑指南(附代码)
redis·分布式·zookeeper
Angletank2 小时前
SpringBoot中JPA组件深入查询业务实现
数据库·spring boot·后端·mysql
一只懒鱼a2 小时前
SpringBoot整合canal实现数据一致性
java·运维·spring boot
我认不到你2 小时前
动态线程池+kafka自定义拒绝策略,做到任务不丢失
java·spring boot·spring cloud·kafka
陌路203 小时前
redis五种数据类型
数据库·redis·缓存