1. 程式人生 > >java快取框架Ehcache學習筆記

java快取框架Ehcache學習筆記

    今天第二個要學習的是: Ehcache快取框架。  目標仍然是三個:  1.有什麼用;   2.怎麼用;   3.大致原理;

1.什麼是Ehcahce:

    這個英語有些複雜看不懂了,但是這是官網給出的解釋。 總之,它就是做快取的。   快取與記憶體密切相關。 我的一點理解就是: 快取與程式在執行時都代表了程序的抽象。  對於那些具有嚴格結構關係的就是程式,或者說上上下文。  而對於那些結構不那麼嚴謹的,或者相關性不強的就可以稱為快取。  它本身就是一個儲存,但是由於它的速度極快。 所以用作快取,它的出現是為了協調CPU與硬體間的速度上的巨大差距。  

    百度百科的釋義是:

2.Ehcache如何使用:

  導包之類的準備操作略過,官網給出的程式碼:

package com.automannn;

import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;

/**
 * @author 
[email protected]
* @time 2018/11/25 13:58 */ public class Main { public static void main(String[] args) { //1.快取管理器 CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() .withCache("preConfigured", CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(100)) .build()) .build(true); //2.快取 Cache<Long, String> preConfigured = cacheManager.getCache("preConfigured", Long.class, String.class); Cache<Long, String> myCache = cacheManager.createCache("myCache", CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(100)).build()); //3.網快取中存 myCache.put(1L, "da one!"); String value = myCache.get(1L); System.out.println(value); cacheManager.close(); } }

  執行結果:

    注意,這個環境下也是需要slf4j日誌框架來支撐的。  當沒有具體的日誌實現時,它的核心業務邏輯任然能跑通。這是與quartz不一樣的地方。

3.大致原理:

    大致原理我不想看原始碼了,我現在很想放縱。

    舉個例子:

package com.automannn;

import java.util.HashMap;
import java.util.Map;

/**
 * @author [email protected]
 * @time 2018/11/25 14:50
 */
public class Main1 {
    public static final Map cache = new HashMap();

    public static void main(String[] args) {
        cache.put("key","hello cache!");
        String value= (String) cache.get("key");
        System.out.println(value);
    }
}

   執行結果:

     要知道,這個時候,這個變數既可以充當上下文環境,也可以充當 快取。  效果還是很強大的。 只不過它沒有一些 外延的功能。 如效能優化,儲存方案的適配,不同狀態儲存策略等等。  加上這些應該就是一個框架了吧。