Ehcache3配置使用

Ehcache3配置方式與Ehcache2的配置方式區(qū)別很大!

緩存管理器只有全局狀態(tài)下其他地方才能根據(jù)名稱拿到緩存,也就是只有保證在同一個(gè)緩存管理器下才能拿到指定緩存

兩種配置方式可同時(shí)使用

xml配置方式

<config xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
        xmlns='http://www.ehcache.org/v3'
        xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core.xsd">

    <!--  http://www.ehcache.org/documentation/3.8/xml.html  -->

    <!--指定緩存持久化目錄-->
    <persistence directory="${java.io.tmpdir}/ehcache-data"/>

    <!-- 1、聲明一個(gè)名為foo的Cache-->
    <cache alias="foo">
        <!--2、foo的鍵值對(duì)被聲明為字符串類型,如果沒有指明,默認(rèn)是Object類型。-->
        <key-type>java.lang.String</key-type>
        <value-type>java.lang.String</value-type>
        <resources>
            <!--3、foo被聲明在堆上保存多達(dá)2,000個(gè)條目。-->
            <heap unit="entries">2000</heap>
            <!--4、在它開始被驅(qū)逐之前,還有多達(dá)500 MB的外堆內(nèi)存-->
            <offheap unit="MB">500</offheap>
        </resources>
    </cache>

    <!-- <cache-template>可以讓你創(chuàng)建一個(gè)抽象的<cache>配置文件,該配置文件可以進(jìn)一步的被擴(kuò)展。-->
    <cache-template name="myDefaults">
        <key-type>java.lang.Long</key-type>
        <value-type>java.lang.String</value-type>
        <!--  org.ehcache.config.ResourceUnit中的屬性,聲明在堆上保存多達(dá)2,000個(gè)條目 -->
        <heap unit="entries">200</heap>
    </cache-template>
    <!-- bar是這樣的cache,它使用名為myDefaults的<cache-template>,并將其主鍵覆蓋到更廣泛的類型-->
    <cache alias="bar" uses-template="myDefaults">
        <key-type>java.lang.Number</key-type>
        <expiry>
            <!-- 通過ttl指定了cache過期時(shí)間,java.wechatutil.concurrent.TimeUnit中的屬性,這里指定為10秒 -->
            <ttl unit="seconds">10</ttl>
        </expiry>
    </cache>
    <!-- simpleCache是另一個(gè)cache,它使用myDefaults配置文件作為其唯一的CacheConfiguration-->
    <cache alias="simpleCache" uses-template="myDefaults"/>


    <cache-template name="stringTemplate">
        <key-type>java.lang.String</key-type>
        <value-type>java.lang.Object</value-type>
        <heap unit="MB">200</heap>
    </cache-template>
    <cache alias="stringCache" uses-template="stringTemplate">
        <value-type>java.lang.String</value-type>
        <expiry>
            <!-- 通過ttl指定了cache過期時(shí)間,java.wechatutil.concurrent.TimeUnit中的屬性,這里指定為10分鐘 -->
            <ttl unit="minutes">10</ttl>
        </expiry>
    </cache>
</config>

SpringBoot配置

# 新版本使用jcache,老版本使用ehcache
spring.cache.jcache.config=classpath:ehcache3.xml

代碼配置方式

  • 資源池生成器配置持久化
ResourcePoolsBuilder resourcePoolsBuilder = ResourcePoolsBuilder.newResourcePoolsBuilder()
    // 堆內(nèi)緩存大小
    .heap(heapCacheSize, MemoryUnit.KB)
    // 堆外緩存大小
    .offheap(offHeapCacheSize, MemoryUnit.MB)
    // 文件緩存大小
    .disk(diskCacheSize, MemoryUnit.MB);
  • 生成配置
CacheConfigurationBuilder.newCacheConfigurationBuilder(keyType, valueType, resourcePoolsBuilder)
    // 緩存超時(shí)時(shí)間
    .withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(withExpiry))
    // 統(tǒng)計(jì)對(duì)象大小時(shí)對(duì)象圖遍歷深度
    .withSizeOfMaxObjectGraph(heapMaxObjectGraph)
    //可緩存的最大對(duì)象大小
    .withSizeOfMaxObjectSize(heapMaxObjectSize, MemoryUnit.MB)
    // 添加監(jiān)聽器
    .add(CacheEventListenerConfigurationBuilder.newEventListenerConfiguration(
            new EhCacheEventListener(), EventType.EXPIRED).unordered().asynchronous())
    //最后調(diào)用build()返回一個(gè)完整的實(shí)例,但是該實(shí)例并未初始化。
    .build();
  • 根據(jù)配置創(chuàng)建緩存管理器
CacheManagerBuilder.newCacheManagerBuilder().withCache(cacheName, config).build(true);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文連接:https://my.oschina.net/coolfire368/blog/123377 ehcac...
    晴天哥_王志閱讀 1,434評(píng)論 0 1
  • 理論總結(jié) 它要解決什么樣的問題? 數(shù)據(jù)的訪問、存取、計(jì)算太慢、太不穩(wěn)定、太消耗資源,同時(shí),這樣的操作存在重復(fù)性。因...
    jiangmo閱讀 3,120評(píng)論 0 11
  • 具體在Springboot中使用緩存如下: 1.在pom.xml中引入cache依賴,添加如下內(nèi)容: 2.在Spr...
    crMiao閱讀 5,315評(píng)論 0 4
  • 史上最全的Spring Boot Cache使用與整合 一:Spring緩存抽象 Spring從3.1開始定義了o...
    eloong閱讀 848評(píng)論 0 1
  • 1題 兩數(shù)字和 [toc] 給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出和為目標(biāo)值的...
    飄已成墜閱讀 104評(píng)論 0 0

友情鏈接更多精彩內(nèi)容