這篇文章將為大家詳細(xì)講解有關(guān)springboot caffine緩存的簡介及demo是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
菏澤網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
Caffeine是使用Java8對(duì)Guava緩存的重寫版本,在Spring 5.0或者Spring Boot 2.0中將取代,基于LRU算法實(shí)現(xiàn),支持多種緩存過期策略。 那么為什么這么好的東西需要被淘汰呢,如果對(duì)于本地Cache有過深入研究的人應(yīng)該知道LRU算法基本可以滿足大部分的場景,但是很多人為了精益求精,基于LRU的算法,又在此基礎(chǔ)上提出了一系列更好的,更有效果的淘汰策略。比如有ARC,LIRS和W-TinyLFU等都提供了接近最理想的命中率,他們這些算法進(jìn)一步提高了本地緩存的效率。 Caffeine配置說明: initialCapacity=[integer]: 初始的緩存空間大小 maximumSize=[long]: 緩存的最大條數(shù) maximumWeight=[long]: 緩存的最大權(quán)重 expireAfterAccess=[duration]: 最后一次寫入或訪問后經(jīng)過固定時(shí)間過期 expireAfterWrite=[duration]: 最后一次寫入后經(jīng)過固定時(shí)間過期 refreshAfterWrite=[duration]: 創(chuàng)建緩存或者最近一次更新緩存后經(jīng)過固定的時(shí)間間隔,刷新緩存 weakKeys: 打開key的弱引用 weakValues:打開value的弱引用 softValues:打開value的軟引用 recordStats:開發(fā)統(tǒng)計(jì)功能 注意: expireAfterWrite和expireAfterAccess同時(shí)存在時(shí),以expireAfterWrite為準(zhǔn)。 maximumSize和maximumWeight不可以同時(shí)使用 weakValues和softValues不可以同時(shí)使用
springbootApplication開啟緩存支持:@EnableCaching// 開啟緩存,需要顯示的指定 maven 引入:
org.springframework.boot spring-boot-starter-cache com.github.ben-manes.caffeine caffeine
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; /** * 個(gè)性化配置緩存 */ @Bean(name = "caffeineCache") public CaffeineCacheManager cacheManager() { CaffeineCacheManager cacheManager = new CaffeineCacheManager(); Caffeine caffeine = Caffeine.newBuilder() //cache的初始容量值 .initialCapacity(10) .expireAfterWrite(DEFAULT_TTL,TimeUnit.SECONDS) //maximumSize用來控制cache的最大緩存數(shù)量,maximumSize和maximumWeight不可以同時(shí)使用, .maximumSize(DEFAULT_MAXSIZE); cacheManager.setCaffeine(caffeine); cacheManager.setCacheNames(getNames()); return cacheManager; } private static ListgetNames(){ List names = new ArrayList<>(2); names.add("datainterface"); return names; } }
關(guān)于springboot caffine緩存的簡介及demo是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。