摘要:的使用过程中,删除缓存只能用具体的删除,不能使用通配符号,原因是不支持这种通配符用法,可以通过修改源代码实现,但这种方式修改了本身代码,后期升级维护不好操作,具体操作方式可以参见命令支持正则删除地址我们使用改写实现具体实现方式为改写
spring cache redis的使用过程中,删除缓存只能用具体的key删除,不能使用通配符号,原因是redis不支持del key这种通配符用法,可以通过修改redis源代码实现,但这种方式修改了redis本身代码,后期升级、维护不好操作,具体操作方式可以参见:
redis del命令支持正则删除(pattern)
git地址:redis-del-with-pattern
我们使用改写spring-redis cache实现
具体实现方式为:
改写:org.springframework.data.redis.cache.RedisCache下的evict方法
原为:cacheWriter.remove(name, createAndConvertCacheKey(key));
改为:cacheWriter.clean(name, createAndConvertCacheKey(key));
spring redis最底层是支持了通配符的方式的,但是经过包装后就去掉了
具体在项目中的使用实例如:
在查询方法上加入缓存:
@Override @Cacheable(keyGenerator = "cacheKeyGenerator") public List query(xx x) throws IllegalAccessException { return xxxx; }
其中cacheKeyGenerator生成如
com.demo.service.impl.xxServiceImpl-query-99986a
删除或更新时:
@Override @CacheEvict(key = "targetClass.name+"-*"") public boolean saveOrUpdate(xx x) { return xxxx; }
其中key时spEL表达式,生成 com.demo.service.impl.xxServiceImpl-*的key
最终效果是在新增或更新时能删除所有列表的缓存key
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/62080.html
摘要:特点具备相当的好的灵活性,不仅能够使用来定义缓存的和各种,还提供开箱即用的缓存临时存储方案,也支持和主流的专业缓存例如的集成。其中号代表这是一个表达式,此表达式可以遍历方法的参数对象,具体语法可以参考的相关文档手册。 SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,...
摘要:特点具备相当的好的灵活性,不仅能够使用来定义缓存的和各种,还提供开箱即用的缓存临时存储方案,也支持和主流的专业缓存例如的集成。其中号代表这是一个表达式,此表达式可以遍历方法的参数对象,具体语法可以参考的相关文档手册。 SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,...
摘要:前言如题,今天介绍的数据缓存。说明确实做了数据缓存,第二次的测试结果是从数据缓存中获取的,并没有直接查数据库。为为的数据做了缓存插入数据返回的结果数据库中的结果访问结果如下图。后语以上为数据缓存的教程。 微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 前言 如题,今天介绍 SpringBoot 的数据缓存。做过开发的都知道程序的瓶颈在于数据库,我们也知道内...
阅读 494·2023-04-26 00:33
阅读 3521·2021-11-24 09:39
阅读 2834·2021-09-22 15:34
阅读 2289·2019-08-23 18:07
阅读 2898·2019-08-23 18:04
阅读 3669·2019-08-23 16:06
阅读 2882·2019-08-23 15:27
阅读 1592·2019-08-23 14:32