springboot项目中redis常见的增删改查操作大全

 更新时间:2026年03月24日 10:08:22   作者:藤原とラふ店丶  
本文介绍了Spring Boot中使用RedisTemplate进行数据操作的常见方法,文章强调Redis操作本质是通过set/get/delete等API实现,并结合业务场景给出了具体代码示例和使用建议,感兴趣的朋友跟随小编一起看看吧

一、增(Create)🔥

1️⃣ 最基础:存字符串

redisTemplate.opsForValue().set("key", "value");

👉 场景:

  • 缓存数据
  • 登录态 token

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

redisTemplate.opsForValue().set("key", "value", 10, TimeUnit.MINUTES);

👉 场景:

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

3️⃣ 存对象(常见🔥)

redisTemplate.opsForValue().set("user:1", user);

👉 注意:

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

👉 场景:

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

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

redisTemplate.opsForHash().put("user:1", "name", "Tom");
redisTemplate.opsForHash().put("user:1", "age", 18);

👉 场景:

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

二、查(Read)🔥

1️⃣ 获取字符串 / 对象

redisTemplate.opsForValue().get("key");

2️⃣ 判断是否存在

redisTemplate.hasKey("key");

👉 场景:

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

3️⃣ Hash 查询

redisTemplate.opsForHash().get("user:1", "name");

👉 或获取整个对象:

redisTemplate.opsForHash().entries("user:1");

4️⃣ 设置过期时间查询

redisTemplate.getExpire("key");

三、改(Update)🔥

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

redisTemplate.opsForValue().set("key", "newValue");

👉 本质:
👉 Redis 没有“修改”,只有重新 set

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

redisTemplate.opsForHash().put("user:1", "name", "Jerry");

👉 场景:

  • 修改用户某个字段

3️⃣ 自增(计数🔥)

redisTemplate.opsForValue().increment("count");

👉 场景:

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

4️⃣ 自减

redisTemplate.opsForValue().decrement("stock");

👉 场景:

  • 秒杀库存

5️⃣ 修改过期时间

redisTemplate.expire("key", 5, TimeUnit.MINUTES);

👉 场景:

  • 延长缓存时间

四、删(Delete)🔥

1️⃣ 删除单个 key

redisTemplate.delete("key");

2️⃣ 批量删除

redisTemplate.delete(Arrays.asList("k1", "k2"));

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

Set<String> keys = redisTemplate.keys("user:*");
redisTemplate.delete(keys);

👉 场景:

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

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

👉 以“用户查询”为例:

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️⃣ 缓存 + 过期时间

set + expire

👉 避免数据永久不更新

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

👉 解决方式:

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

3️⃣ 缓存雪崩

👉 解决:

  • 随机过期时间
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 等结构实现复杂业务。

到此这篇关于springboot项目中redis常见的增删改查操作大全的文章就介绍到这了,更多相关springboot redis增删改查内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Javafx利用fxml变换场景的实现示例

    Javafx利用fxml变换场景的实现示例

    本文主要介绍了Javafx利用fxml变换场景的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • Springsecurity Oauth2如何设置token的过期时间

    Springsecurity Oauth2如何设置token的过期时间

    如果用户在指定的时间内有操作就给token延长有限期,否则到期后自动过期,如何设置token的过期时间,本文就来详细的介绍一下
    2021-08-08
  • Netty分布式Server启动流程服务端初始化源码分析

    Netty分布式Server启动流程服务端初始化源码分析

    本章主要讲解server启动的关键步骤, 读者只需要了解server启动的大概逻辑, 知道关键的步骤在哪个类执行即可, 并不需要了解每一步的运作机制, 之后会对每个模块进行深度分析
    2022-03-03
  • Java ArrayList中存放引用数据类型的方式

    Java ArrayList中存放引用数据类型的方式

    这篇文章主要介绍了Java ArrayList中存放引用数据类型的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java获取启动参数方式

    Java获取启动参数方式

    本文介绍了Java应用程序如何获取JVM启动参数,包括标准参数、非标准参数和高级参数,介绍了通过`main`方法参数、`System.getProperty`和`RuntimeMXBean`获取启动参数的方式,并提供了一个实际项目案例,展示了如何结合多种方式灵活配置应用程序
    2025-01-01
  • SpringBoot实现PDF转图片的代码示例

    SpringBoot实现PDF转图片的代码示例

    在本文中,我们使用SpringBoot演示了如何将PDF文件转换为一张或多张图片,这些示例演示了如何使用Java编程语言与其他开源技术集成,以实现各种文件格式之间的转换,感兴趣的小伙伴跟着小编一起来看看吧
    2024-08-08
  • java中xml进行报文发送和解析操作

    java中xml进行报文发送和解析操作

    这篇文章主要介绍了java中xml进行报文发送和解析操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 使用ServletUtil.write方法下载接口文件中文乱码问题解决

    使用ServletUtil.write方法下载接口文件中文乱码问题解决

    本文主要介绍了使用ServletUtil.write方法下载接口文件中文乱码问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • SpringBoot Test的webEnvironment源码解读

    SpringBoot Test的webEnvironment源码解读

    这篇文章主要为大家介绍了SpringBoot Test的webEnvironment源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • SpringCloud项目中Feign组件添加请求头所遇到的坑及解决

    SpringCloud项目中Feign组件添加请求头所遇到的坑及解决

    这篇文章主要介绍了SpringCloud项目中Feign组件添加请求头所遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论