91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ehcache的三級緩存

發布時間:2020-07-04 09:01:17 來源:網絡 閱讀:927 作者:lifeneedyou 欄目:編程語言
開發架構中,經常把ehcache+redis兩集緩存來做配合。。通常ehcache+redis+mysql 來作為三層存儲架構,最后到數據庫,然后db----->redis ---->ehcache 來供程序查詢使用。。
而ehcache本身也支持3級緩存 “堆內內存、堆外內存、磁盤存儲”
作為本地緩存框架, Ehcache支持多層緩存模式,常用的有三種數據存儲介質:

1堆內
直接在JVM堆中存儲JAVA對象,優點是速度快;缺點是會增加GC的頻次和GC時間。

2堆外
在堆外內存中存儲序列化的JAVA對象,優點是不會增加GC;缺點是存取速度較慢,需要額外的時間處理序列化和反序列化。

3 磁盤
緩存數據到磁盤,優點是掉電不會丟失數據,可用空間更大;缺點是存取速度比堆外慢很多。

ehcache的三級緩存

4三種結構一起使用,結構如上圖。

5時序圖

在Ehcache的多層緩存結構中,最底層被稱為Authoritative Tier,其余的緩存層被稱為Caching Tier。Authoritative Tier層數據是最全的,其余層的數據都是該層的數據子集,只是臨時存儲數據。

比如,堆內+堆外模式中,堆外為Authoritative Tier。堆內+堆外+磁盤模式中,磁盤為Authoritative Tier。

ehcache的三級緩存

ehcache的三級緩存

6 序列化

堆外和磁盤存儲時,必須先將對象序列化為java.nio.ByteBuffer,Ehcache允許用戶按下面的代碼傳入自定義的序列化類。

7 轉一個demo

import java.io.File;
import org.ehcache.Cache;
import org.ehcache.PersistentCacheManager;
import org.ehcache.UserManagedCache;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
import org.ehcache.config.builders.UserManagedCacheBuilder;
import org.ehcache.config.units.EntryUnit;
import org.ehcache.config.units.MemoryUnit;

public class Main {

public static void main(String[] args) {

    PersistentCacheManager persistentCacheManager = CacheManagerBuilder.newCacheManagerBuilder()
    .with(CacheManagerBuilder.persistence(getStoragePath() + File.separator + "myData")) 
    .withCache("threeTieredCache",
        CacheConfigurationBuilder.newCacheConfigurationBuilder(Integer.class, String.class,
            ResourcePoolsBuilder.newResourcePoolsBuilder()
                .heap(10, EntryUnit.ENTRIES)  //堆
                .offheap(1, MemoryUnit.MB)    //堆外
                .disk(20, MemoryUnit.GB)      //磁盤
            )
    ).build(true);

    Cache<Integer, String> threeTieredCache = persistentCacheManager.getCache("threeTieredCache", Integer.class, String.class);

    //讀
    for (int i=0;i<=20000;i++){
        threeTieredCache.put(i, "$"+i);
    }

    //寫
    for (int i=0;i<=200000;i++){
        String value = threeTieredCache.get(i);
        System.out.println("get at "+i+":"+value);
    }

    persistentCacheManager.close();
}

private static String getStoragePath() {
    // TODO Auto-generated method stub
    return "d:";
}

}

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

垦利县| 林芝县| 武鸣县| 东阿县| 叶城县| 日照市| 太白县| 福清市| 白玉县| 和林格尔县| 茌平县| 彩票| 安西县| 福海县| 南平市| 沾化县| 恩平市| 隆昌县| 剑川县| 囊谦县| 镇巴县| 平武县| 黄平县| 高唐县| 通山县| 保定市| 石河子市| 磐石市| 长岭县| 阳春市| 安义县| 溧水县| 香格里拉县| 龙南县| 策勒县| 安福县| 兴文县| 威信县| 金川县| 乐清市| 曲阳县|