springboot项目中redis常见的增删改查操作大全
一、增(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增删改查内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Springsecurity Oauth2如何设置token的过期时间
如果用户在指定的时间内有操作就给token延长有限期,否则到期后自动过期,如何设置token的过期时间,本文就来详细的介绍一下2021-08-08
使用ServletUtil.write方法下载接口文件中文乱码问题解决
本文主要介绍了使用ServletUtil.write方法下载接口文件中文乱码问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-05-05
SpringBoot Test的webEnvironment源码解读
这篇文章主要为大家介绍了SpringBoot Test的webEnvironment源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-09-09
SpringCloud项目中Feign组件添加请求头所遇到的坑及解决
这篇文章主要介绍了SpringCloud项目中Feign组件添加请求头所遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-04-04


最新评论