如何在SpringBoot中清除所有快取 ?
快取提高了效能,但也引入了一致性問題。這就是為什麼在我的 Spring Boot 應用程式中啟用快取後,我意識到提供一個程式來按需清除所有快取是多麼重要。
登入到您的伺服器以手動釋放 您的應用程式的所有快取資料應該是最後一個絕望的選擇。因此,我開始尋找方法來為管理員提供一種在需要時清除所有快取的可靠且安全的方法。幸運的是,這可以透過幾行程式碼輕鬆實現。
讓我們看看如何定義一個自定義 API,旨在清除 Spring Boot 應用程式的快取。
構建 API
假設您的應用程式已經使用了快取引擎,並使用了Spring Cache 模組。一切都被認為是正確配置的。
為了處理快取,Spring在啟動時內部建立了一個CacheManager bean。儘管 Spring 不提供按需清除所有快取的功能,但您可以透過利用此快取管理器來實現這一點。
事實上,它的getCacheNames()方法返回您的管理器中已知的快取名稱的集合。透過迭代它們,您可以檢索當前正在處理的每個Cache例項,並clear()在每個例項上呼叫該方法。
透過這種簡單的方法,您可以定義一種安全的方法來清除 Spring Boot 應用程式中使用的所有快取。這就是為什麼設計一個 API 來實現這樣的目標並不複雜,可以實現如下:
@RestController @RequestMapping("/caches") public class CachingController { @Autowired private CacheManager cacheManager; @DeleteMapping("clear") public ResponseEntity<Void> clearAllCaches() { cacheManager .getCacheNames() .stream() .forEach(cacheName -> cacheManager.getCache(cacheName).clear()); } } |
您只需要自動連線已實現的CacheManager bean 並遵循上述方法。透過將這個邏輯封裝在一個公開的端點中,您實際上是在定義一個觸發器,只要呼叫 API 就可以啟用它。
請注意,只有在插入第一個條目時才會初始化快取。這意味著在CacheManager快取任何資料之前,您不會看到任何可用的快取。
相關文章
- 如何在win8系統中清除磁貼快取?快取
- macOS 中清除 DNS 快取MacDNS快取
- 如何在蘋果 Mac上清除快取檔案?蘋果Mac快取
- SDWebImage清除快取Web快取
- 如何在MAC OS,Linux和Windows清除本地DNS快取MacLinuxWindowsDNS快取
- jQuery ajax清除快取jQuery快取
- flutter 獲取應用快取以及清除快取Flutter快取
- iOS-清除快取(有用)iOS快取
- 清除xhmlhttp快取的方法HTTP快取
- 清除DNS快取資訊方法DNS快取
- SDWebImage實現圖片展示、快取、清除快取Web快取
- 教你如何在dos下清除列印快取及重啟列印服務快取
- 重新整理dns快取命令 dns快取清除命令DNS快取
- 微信清除快取資料方法快取
- Mac OS X 清除DNS快取MacDNS快取
- Dynamics 365 Portal如何清除快取快取
- 如何清除瀏覽器快取瀏覽器快取
- C#清除頁面快取C#快取
- SpringBoot中整合Redis(快取篇)Spring BootRedis快取
- SpringBoot中實現兩級快取Spring Boot快取
- 用whistle清除js和css快取JSCSS快取
- jQuery清除快取例項程式碼jQuery快取
- 高效清除系統快取有妙招快取
- 清除瀏覽器快取的方法瀏覽器快取
- Android 清除快取功能實現Android快取
- ASP.NET清除頁面快取ASP.NET快取
- 如何清除字串中的所有空格字串
- 如何在SPRING中同時管理本地快取和分散式快取? - techblogSpring快取分散式
- SpringBoot中Shiro快取使用Redis、EhcacheSpring Boot快取Redis
- SpringBoot使用快取Spring Boot快取
- 如何快速清除 Ubuntu 的系統快取Ubuntu快取
- 清除快取資料--工具類封裝快取封裝
- IE瀏覽器清除Ajax快取方法瀏覽器快取
- SpringBoot快取管理(一) 預設快取管理Spring Boot快取
- 如何在 Spring Boot 中為快取新增壓縮?Spring Boot快取
- 如何清除某條SQL在庫快取中的執行計劃SQL快取
- SpringBoot快取管理(二) 整合Redis快取實現Spring Boot快取Redis
- Nginx下快取靜態檔案(如css js)Nginx快取CSSJS