您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關springboot caffine緩存的簡介及demo是怎樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Caffeine是使用Java8對Guava緩存的重寫版本,在Spring 5.0或者Spring Boot 2.0中將取代,基于LRU算法實現,支持多種緩存過期策略。 那么為什么這么好的東西需要被淘汰呢,如果對于本地Cache有過深入研究的人應該知道LRU算法基本可以滿足大部分的場景,但是很多人為了精益求精,基于LRU的算法,又在此基礎上提出了一系列更好的,更有效果的淘汰策略。比如有ARC,LIRS和W-TinyLFU等都提供了接近最理想的命中率,他們這些算法進一步提高了本地緩存的效率。 Caffeine配置說明: initialCapacity=[integer]: 初始的緩存空間大小 maximumSize=[long]: 緩存的最大條數 maximumWeight=[long]: 緩存的最大權重 expireAfterAccess=[duration]: 最后一次寫入或訪問后經過固定時間過期 expireAfterWrite=[duration]: 最后一次寫入后經過固定時間過期 refreshAfterWrite=[duration]: 創建緩存或者最近一次更新緩存后經過固定的時間間隔,刷新緩存 weakKeys: 打開key的弱引用 weakValues:打開value的弱引用 softValues:打開value的軟引用 recordStats:開發統計功能 注意: expireAfterWrite和expireAfterAccess同時存在時,以expireAfterWrite為準。 maximumSize和maximumWeight不可以同時使用 weakValues和softValues不可以同時使用
springbootApplication開啟緩存支持:@EnableCaching// 開啟緩存,需要顯示的指定 maven 引入:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> </dependency>
demo:
import com.github.benmanes.caffeine.cache.Caffeine; import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @Configuration public class CacheConfig { private static final int DEFAULT_MAXSIZE = 10; private static final int DEFAULT_TTL = 15 * 60; /** * 個性化配置緩存 */ @Bean(name = "caffeineCache") public CaffeineCacheManager cacheManager() { CaffeineCacheManager cacheManager = new CaffeineCacheManager(); Caffeine caffeine = Caffeine.newBuilder() //cache的初始容量值 .initialCapacity(10) .expireAfterWrite(DEFAULT_TTL,TimeUnit.SECONDS) //maximumSize用來控制cache的最大緩存數量,maximumSize和maximumWeight不可以同時使用, .maximumSize(DEFAULT_MAXSIZE); cacheManager.setCaffeine(caffeine); cacheManager.setCacheNames(getNames()); return cacheManager; } private static List<String> getNames(){ List<String> names = new ArrayList<>(2); names.add("datainterface"); return names; } }
關于springboot caffine緩存的簡介及demo是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。