緩存在很多場景下都是相當有用的。例如,計算或檢索一個值的代價很高,並且對同樣的輸入需要不止一次獲取
值的時候,就應當考慮使用緩存。
Guava Cache 與 ConcurrentMap 很相似,但也不完全一樣。最基本的區別是 ConcurrentMap 會一直保存所
有添加的元素,直到顯式地移除。相對地,Guava Cache 為了限制內存占用,通常都設定為自動回收元素。在
某些場景下,盡管 LoadingCache 不回收元素,它也是很有用的,因為它會自動加載緩存。
通常來說,Guava Cache 適用於:
• 你願意消耗一些內存空間來提升速度。
• 你預料到某些鍵會被查詢一次以上。
• 緩存中存放的數據總量不會超出內存容量。(Guava Cache 是單個應用運行時的本地緩存。它不把數據存
放到文件或外部服務器。如果這不符合你的需求,請嘗試 Memcached 這類工具)
如果你的場景符合上述的每一條,Guava Cache 就適合你。
如同范例代碼展示的一樣,Cache 實例通過 CacheBuilder 生成器模式獲取,但是自定義你的緩存才是最有趣的
部分。
注:如果你不需要 Cache 中的特性,使用 ConcurrentHashMap 有更好的內存效率——但 Cache 的大多數特
性都很難基於舊有的 ConcurrentMap 復制,甚至根本不可能做到。
基於spring的GuavaCacheManager 配置
pom.xml
spring支持的本地內存
配置GuavaCacheManager
測試
緩存menu分頁信息
移除menu所有緩存
微信公眾號
JAVA程序猿成長之路
分享資源,記錄程序猿成長點滴。專注於Java,Spring,SpringBoot,SpringCloud,分布式,微服務。