@CacheEvict 清除多个key的实现方式
作者:Amy## 发布时间:2023-11-21 08:28:04
标签:@CacheEvict,清除,key
借用@Caching实现
入参是基本类型的:
@Caching(evict={@CacheEvict(value = Cache.CONSTANT, key = "'" + CacheKey.SINGLE_ROLE_NAME + "'+#roleId"),
@CacheEvict(value = Cache.CONSTANT, key = "'" + CacheKey.ROLES_NAME + "'+#roleId"),
@CacheEvict(value = Cache.CONSTANT, key = "'" + CacheKey.SINGLE_ROLE_NAME + "'+#roleId")})
public ResponseData remove(@RequestParam Long roleId) {
………………
}
入参是对象的:
@Caching(evict={@CacheEvict(value = Cache.CONSTANT, key = "'" + CacheKey.SINGLE_ROLE_NAME + "'+#roleDto.roleId"),
@CacheEvict(value = Cache.CONSTANT, key = "'" + CacheKey.ROLES_NAME + "'+#roleDto.roleId"),
@CacheEvict(value = Cache.CONSTANT, key = "'" + CacheKey.SINGLE_ROLE_NAME + "'+#roleDto.roleId")})
public ResponseData edit(RoleDto roleDto) {
this.roleService.editRole(roleDto);
return SUCCESS_TIP;
}
补充:@CacheEvict 模糊删除缓存问题-RedisTemplate 模糊key删除缓存
缓存管理使用注解形式,非常方便了我们的使用,然而今天我想 使用 @CacheEvict 的实和key 进行 模糊删除,发现 @CacheEvict 貌似不支持这样的操作,然后想起 RedisTemplate 好像支持 key的模糊匹配。
于是,方法有了
既然@CacheEvict做不到,那就用 RedisTemplate
第一步:
获取key
这里的key就是 : user:role* 这样的
Set<Object,Object> keys = redisTemplate.keys( key );
第二步:
判断 keys 非空,然后进行删除
if (CollectionUtils.isNotEmpty(keys)) {
redisTemplate.delete(keys);
}
总结:
删除缓存的时候,如果 keys 是空的,则没有反应,因为查看源码可知,redisTemplate 帮你判断了,如果是 空的则 return
此处也有可能删不掉,删不掉很可能就是 key 的序列化问题
来源:https://blog.csdn.net/Amy126/article/details/88661773


猜你喜欢
- 引言偶然在Youtube上看到一名国外安卓开发者分享了一个提升应用性能的视频,其中使用到了macro benchmark来进行性能测量,包括
- eclipse 创建 user library 方法1、Window - Preferences - Java - Build Path -
- 本文实例讲述了C#遍历操作系统下所有驱动器的方法。分享给大家供大家参考。具体分析如下:这里先通过DriveInfo类的GetDrivers方
- 前言 对于服务端,达到高性能、高扩展离不开异步。对于客户端,函数执行时间是1毫秒还是100毫秒
- 1、前言WorkManager 是适合用于持久性工作的推荐解决方案。如果工作始终要通过应用重启和系统重新启动来调度,便是持久性的工
- Unity IPostprocessBuildWithReportUnity IPostprocessBuildWithReport是Uni
- 记得在2013年12月的时候,有系列文章是介绍怎么开发一个智能手表的App,让用户可以在足球比赛中记录停表时间。随着Android Wear
- 目录Handler概要构造器sendMessageAtTimedispatchMessageThreadLocalLooperMessage
- 本文为大家分享了Android APP编写的简单答题器,此答题器可以通过Next按钮选择下一题,新写题目的类Question,有两个成员变量
- 本文实例为大家分享了Android自定义view课表的具体代码,供大家参考,具体内容如下这里是模拟课表,数据写死了的,不过也可以通过抓包获取
- 一、本地仓库初始化与远程仓库推送操作Idea 基本环境配置Github 配置Git 执行文件目录指定创建工程git02创建本地仓库并提交项目
- 说到事件机制,可能脑海中最先浮现的就是日常使用的各种 listener,listener去监听事件源,如果被监听的事件有变化就会通知list
- 本文主要记录JAVA中对象的初始化过程,包括实例变量的初始化和类变量的初始化以及final关键字对初始化的影响。另外,还讨论了由于继承原因,
- 本文实例为大家分享了winform循环播放多个视频的具体代码,供大家参考,具体内容如下环境: vs2015 +winform首先,vs自带组
- 看到题目后,分析了下, 10的阶乘就已经很大了。计算出来再得到这个末尾的0的个数,完全不现实,即使实现了也是很麻烦的。后来想某个数的阶乘中乘
- 大家都知道使用java反射可以在运行时动态改变对象的行为,甚至是private final的成员变量,但并不是所有情况下,都可以修改成员变量
- 1、何为依赖冲突Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子,现在你的
- 在 Lock 接口中,获取锁的方法有 4 个:lock()、tryLock()、tryLock(long,TimeUnit)、lockInt
- 一、概述参照官方demo,基于agora开发,输入会议号(频道)和显示名称 参会,可设置参会选项。支持用户注册和登录。支持多人参会。二、效果
- 使用resilience4j的库和Spring Boot设计高弹性的微服务。微服务本质上是分布式的。当您使用分布式系统时,请始终记住这一第一