spring cache 实现按照*号删除缓存

栏目: Java · 发布时间: 6年前

内容简介:spring cache redis的使用过程中,删除缓存只能用具体的key删除,不能使用通配符git地址:

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript面向对象编程指南

JavaScript面向对象编程指南

斯托扬 / 凌杰 / 人民邮电出版社 / 2013-3 / 59.00元

《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件、AJAX和JSON;如何实现JavaScript中缺失的面向对象特性,如对象的私有成员与私有方法;如何应用适当的编程模式,......一起来看看 《JavaScript面向对象编程指南》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具