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

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

内容简介: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


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

查看所有标签

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

暗时间

暗时间

刘未鹏 / 电子工业出版社 / 2011-7 / 35.00元

2003年,刘未鹏在杂志上发表了自己的第一篇文章,并开始写博客。最初的博客较短,也较琐碎,并夹杂着一些翻译的文章。后来渐渐开始有了一些自己的心得和看法。总体上在这8年里,作者平均每个月写1篇博客或更少,但从未停止。 刘未鹏说—— 写博客这件事情给我最大的体会就是,一件事情如果你能够坚持做8年,那么不管效率和频率多低,最终总能取得一些很可观的收益。而另一个体会就是,一件事情只要你坚持得足......一起来看看 《暗时间》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具