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


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

查看所有标签

猜你喜欢:

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

Practical Vim, Second Edition

Practical Vim, Second Edition

Drew Neil / The Pragmatic Bookshelf / 2015-10-31 / USD 29.00

Vim is a fast and efficient text editor that will make you a faster and more efficient developer. It’s available on almost every OS, and if you master the techniques in this book, you’ll never need an......一起来看看 《Practical Vim, Second Edition》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具