摘要:的使用過程中,刪除緩存只能用具體的刪除,不能使用通配符號,原因是不支持這種通配符用法,可以通過修改源代碼實現,但這種方式修改了本身代碼,后期升級維護不好操作,具體操作方式可以參見命令支持正則刪除地址我們使用改寫實現具體實現方式為改寫
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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/62080.html
摘要:特點具備相當的好的靈活性,不僅能夠使用來定義緩存的和各種,還提供開箱即用的緩存臨時存儲方案,也支持和主流的專業緩存例如的集成。其中號代表這是一個表達式,此表達式可以遍歷方法的參數對象,具體語法可以參考的相關文檔手冊。 SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,...
摘要:特點具備相當的好的靈活性,不僅能夠使用來定義緩存的和各種,還提供開箱即用的緩存臨時存儲方案,也支持和主流的專業緩存例如的集成。其中號代表這是一個表達式,此表達式可以遍歷方法的參數對象,具體語法可以參考的相關文檔手冊。 SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,...
摘要:前言如題,今天介紹的數據緩存。說明確實做了數據緩存,第二次的測試結果是從數據緩存中獲取的,并沒有直接查數據庫。為為的數據做了緩存插入數據返回的結果數據庫中的結果訪問結果如下圖。后語以上為數據緩存的教程。 微信公眾號:一個優秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 如題,今天介紹 SpringBoot 的數據緩存。做過開發的都知道程序的瓶頸在于數據庫,我們也知道內...
閱讀 526·2023-04-26 00:33
閱讀 3550·2021-11-24 09:39
閱讀 2955·2021-09-22 15:34
閱讀 2329·2019-08-23 18:07
閱讀 2922·2019-08-23 18:04
閱讀 3711·2019-08-23 16:06
閱讀 2903·2019-08-23 15:27
閱讀 1623·2019-08-23 14:32