Spring 低版本基於GuavaCacheManager的本地內存


緩存在很多場景下都是相當有用的。例如,計算或檢索一個值的代價很高,並且對同樣的輸入需要不止一次獲取
值的時候,就應當考慮使用緩存。


Guava Cache 與 ConcurrentMap 很相似,但也不完全一樣。最基本的區別是 ConcurrentMap 會一直保存所
有添加的元素,直到顯式地移除。相對地,Guava Cache 為了限制內存占用,通常都設定為自動回收元素。在
某些場景下,盡管 LoadingCache 不回收元素,它也是很有用的,因為它會自動加載緩存。

通常來說,Guava Cache 適用於:
• 你願意消耗一些內存空間來提升速度。
• 你預料到某些鍵會被查詢一次以上。
• 緩存中存放的數據總量不會超出內存容量。(Guava Cache 是單個應用運行時的本地緩存。它不把數據存
放到文件或外部服務器。如果這不符合你的需求,請嘗試 Memcached 這類工具)
如果你的場景符合上述的每一條,Guava Cache 就適合你。
如同范例代碼展示的一樣,Cache 實例通過 CacheBuilder 生成器模式獲取,但是自定義你的緩存才是最有趣的
部分。


注:如果你不需要 Cache 中的特性,使用 ConcurrentHashMap 有更好的內存效率——但 Cache 的大多數特
性都很難基於舊有的 ConcurrentMap 復制,甚至根本不可能做到。

基於spring的GuavaCacheManager 配置

pom.xml

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency>
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>20.0</version> </dependency>

spring支持的本地內存

配置GuavaCacheManager

import com.google.common.cache.CacheBuilder; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.guava.GuavaCacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.concurrent.TimeUnit; /** * @author Created by niugang on 2019/4/11/10:44 */ @Configuration @EnableCaching(proxyTargetClass = true) public class CustomGuavaCacheConfig { @Bean public CacheManager cacheManager() { GuavaCacheManager cacheManager = new GuavaCacheManager(); cacheManager.setCacheBuilder(CacheBuilder.newBuilder().expireAfterWrite(3600, TimeUnit.SECONDS).maximumSize(1000)); return cacheManager; } } 

測試

緩存menu分頁信息

移除menu所有緩存

                                                                        微信公眾號

                                               

                                                                             JAVA程序猿成長之路

                          分享資源,記錄程序猿成長點滴。專注於Java,Spring,SpringBoot,SpringCloud,分布式,微服務。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM