springboot项目中redis常见的增删改查操作是哪些?

一、增(Create)🔥

1️⃣ 最基础:存字符串

java 复制代码
redisTemplate.opsForValue().set("key", "value");

👉 场景:

  • 缓存数据
  • 登录态 token

2️⃣ 设置过期时间(非常常用🔥)

java 复制代码
redisTemplate.opsForValue().set("key", "value", 10, TimeUnit.MINUTES);

👉 场景:

  • 缓存自动失效
  • 避免脏数据

3️⃣ 存对象(常见🔥)

java 复制代码
redisTemplate.opsForValue().set("user:1", user);

👉 注意:

  • 需要序列化(JSON / Redis序列化器)

👉 场景:

  • 用户信息缓存
  • 商品详情缓存

4️⃣ Hash 存对象(更推荐🔥)

java 复制代码
redisTemplate.opsForHash().put("user:1", "name", "Tom");
redisTemplate.opsForHash().put("user:1", "age", 18);

👉 场景:

  • 存复杂对象
  • 避免整体序列化

二、查(Read)🔥

1️⃣ 获取字符串 / 对象

java 复制代码
redisTemplate.opsForValue().get("key");

2️⃣ 判断是否存在

java 复制代码
redisTemplate.hasKey("key");

👉 场景:

  • 防止重复请求
  • 缓存判断

3️⃣ Hash 查询

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

👉 或获取整个对象:

java 复制代码
redisTemplate.opsForHash().entries("user:1");

4️⃣ 设置过期时间查询

java 复制代码
redisTemplate.getExpire("key");

三、改(Update)🔥

1️⃣ 覆盖更新(最常见)

java 复制代码
redisTemplate.opsForValue().set("key", "newValue");

👉 本质:

👉 Redis 没有"修改",只有重新 set


2️⃣ Hash 更新(局部更新🔥)

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

👉 场景:

  • 修改用户某个字段

3️⃣ 自增(计数🔥)

java 复制代码
redisTemplate.opsForValue().increment("count");

👉 场景:

  • 浏览量
  • 点赞数
  • 访问次数

4️⃣ 自减

java 复制代码
redisTemplate.opsForValue().decrement("stock");

👉 场景:

  • 秒杀库存

5️⃣ 修改过期时间

java 复制代码
redisTemplate.expire("key", 5, TimeUnit.MINUTES);

👉 场景:

  • 延长缓存时间

四、删(Delete)🔥

1️⃣ 删除单个 key

java 复制代码
redisTemplate.delete("key");

2️⃣ 批量删除

java 复制代码
redisTemplate.delete(Arrays.asList("k1", "k2"));

3️⃣ 模糊删除(慎用🔥)

java 复制代码
Set<String> keys = redisTemplate.keys("user:*");
redisTemplate.delete(keys);

👉 场景:

  • 删除一类缓存
    ⚠️ 生产慎用(会阻塞)

五、真实项目中的完整流程(重点🔥)

👉 以"用户查询"为例:

java 复制代码
public User getUser(Long id) {

    String key = "user:" + id;

    // 1. 查缓存
    User user = (User) redisTemplate.opsForValue().get(key);
    if (user != null) {
        return user;
    }

    // 2. 查数据库
    user = userMapper.selectById(id);

    // 3. 放入缓存
    redisTemplate.opsForValue().set(key, user, 30, TimeUnit.MINUTES);

    return user;
}

👉 这就是标准:

👉 缓存穿透/缓存使用模型(高频面试)


六、常见组合(真实项目🔥)


1️⃣ 缓存 + 过期时间

java 复制代码
set + expire

👉 避免数据永久不更新


2️⃣ 缓存击穿(热点数据)

👉 解决方式:

  • 加锁(Redis分布式锁)
  • 逻辑过期

3️⃣ 缓存雪崩

👉 解决:

  • 随机过期时间
java 复制代码
redisTemplate.opsForValue().set("key", "value", 30 + new Random().nextInt(10), TimeUnit.MINUTES);

七、一句话总结(面试直接用🔥)

👉
Spring Boot 中 Redis 的增删改查本质是:通过 RedisTemplate 提供的 set、get、delete、increment 等 API 实现数据的存储、查询、更新和删除,其中增和改本质都是 set,查用 get,删用 delete,并结合过期时间和 Hash、List 等结构实现复杂业务。


相关推荐
代码调试师4 小时前
【毕设分享】基于SpringBoot的旅游向导分配管理系统57145
spring boot·毕业设计·源码·课程设计·毕设·大作业·程序定制
2301_32241428045 小时前
活力孕康复APP 47737- 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·mysql·微信小程序·idea·微信开发者工具
vx_Biye_Design6 小时前
springboot游泳馆系统93765-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·spring·课程设计
专业程序开发源6 小时前
springbootLivehouse票务系统-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·pygame
卓怡学长7 小时前
w233基于vue和springboot的宠物管理系统的设计与实现
java·vue.js·spring boot·spring·intellij-idea
梨涡泥窝9 小时前
JavaWeb——基于 Spring Boot + Vue 的图书管理系统的设计与实现
vue.js·spring boot·后端
吃饱了得干活11 小时前
Redisson 进阶实战:看门狗机制与分布式锁完全指南
java·redis·后端
隐退山林11 小时前
JavaEE进阶:SpringBoot统一功能处理
java·spring boot·后端
loser.with.m12 小时前
【AgentScope 2.0】8-MCP 集成:Agent 的「USB-C 接口」是怎么接的
人工智能·spring boot·agentscope
代码不停12 小时前
Spring Boot 配置文件
spring boot·后端