ehcache基本使用例

5173 ワード

1.簡単な説明
なぜキャッシュを使っているのか、キャッシュを使っているシーンはここで説明するものではないです.そして、無視して、直接に重点を言います.
ehcacheはキャッシュツールですが、redis、memcacheと同様にキャッシュ機能を提供しています.butはプロセス内キャッシュツールです.もちろん分散キャッシュもサポートしています.
しかし、ローカルキャッシュを使用する必要がある時、ehcacheは便利なツールです.これはredisなどの外付けツールに比べて、より速い読み書き速度を持っています.そして、豊富な機能も提供しています.一番大切なのは、簡単で、使いやすい、機能が強いです.
余談は控えてください.公式文書を見に行くことを勧めます.初めて使うので、ドアに入ってみたいです.下を見てください.
2.いくつかの重要なクラス
2.1 CacheManager
簡単に言えば、このクラスはキャッシュ(Cache)を管理するためのもので、これは単例をサポートし、newでの実装もサポートしています.
このクラスのインスタンスを取得するには、次のような方法があります.
  • デフォルトのローディングパスのehcache.xml構成
  • CacheManager manager = CacheManager.create();
    CacheManager manager = new CacheManager();
    上記の2つの方法は、デフォルトでクラスパスからehcache.xml構成をロードして初期化するもので、この構成については第3節が見られます.
        2.プロファイルの位置を指定する
    //   1      
    CacheManager manager = new CacheManager("src/config/ehcache.xml");
    //   2           
    CacheManager manager = new CacheManager(Thread.currentThread().getClass().getResource("/ehcache.xml"))
      //   3       
    try(InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath())) {
    CacheManager manager = new CacheManager(fis);
    }
    2.2 Cache
    CacheManagerから取得すると、これはキャッシュエリアと見なされ、各エリアが互いに影響しないように、nameで表示され、このnameでCacheManagerからも取得されます.
    例えば、ehcache.xmlでcacheを定義しました.nameはdemoCacheです.取得したコードはこのようです.
    Cache demoCache = cacheManage.getCache("demoCache");
    ps.このcacheは必ずしもehcache.xmlで定義しなくてもいいです.動的に追加することができます.具体的には第4節の説明を見てください.
    2.3 Element
    これはキャッシュ(Cache)の原子要素と考えられます.CacheからCRUDには、keyとvalueと訪問記録の標識があります.デフォルトではk、vを使って実装し、Cacheに預け入れることができます.以下の通りです.
    cache.put(new Element(key, value));
    3.ehcache.xml
    まず公式規格のehcache.xmlファイルをください.http://www.ehcache.org/ehcache.xml
    この上にすべての構成項目および詳細な説明およびいくつかの概略構成が挙げられています.ここではいくつかの項目について簡単に説明します.構成例は以下の通りです.
    
    
    
        
        
    
        
        
            
        
    
        
        
    
  • disk Storeディスクキャッシュ位置、少なくとも1つのディスクの持続化が必要であれば、この位置を表示します.デフォルトではjava.io.tmpdirを使用しています.臨時ファイルパス、私の例ではuser.dirを使用しています.もちろん、user.home:ユーザ経路またはVMパラメータで設定するパスも使えます.
  • name:このキャッシュエリアを識別する名前は、CacheManagerからこのキャッシュエリアを取得するのもこの識別子
  • です.
  • maxElements InMemory :メモリに記憶できる最大の要素の個数、0は無限の
  • を表します.
  • eternal:キャッシュ中のオブジェクトが恒久的であるかどうかを設定し、デフォルトではfalseである場合、trueの表現が永遠に有効である場合、timeToIdle SecondsとtimeToLiveSecondsは有効ではない
  • .
  • timeToIdleSeconds:キャッシュ中のオブジェクトの空き時間は、timeToLiveSeconds
  • より小さいはずです.
  • timeToLiveSeconds:オブジェクトのライフサイクル、タイムアウトの生存時間は
  • を回収されます.
  • diskyPersistent:ディスクに耐久化されているかどうか、もしディスクに持続化されたら、再起動時に期限が切れていないキャッシュオブジェクトがまたロードされます.
  • overflowToDisk:メモリが足りない場合、ディスクキャッシュ
  • を有効にしますか?
  • memory Store EnitionPolicy:キャッシュオブジェクト回収ポリシー、LRU、LFU、FIFO、
  • があります.
    p.s.ディスク回収戦略はデフォルトではLRUです.
    4.キャッシュを動的に追加し、設定を更新する
    4.1ダイナミックキャッシュの追加
    これは直接公式のコード例をあげましょう.
    //Create a CacheManager using defaults
    CacheManager manager = CacheManager.create();
    //Create a Cache specifying its configuration.
    Cache testCache = new Cache(
    new CacheConfiguration("test", maxElements)
    .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU)
    .overflowToDisk(true)
    .eternal(false)
    .timeToLiveSeconds(60)
    .timeToIdleSeconds(30)
    .diskPersistent(false)
    .diskExpiryThreadIntervalSeconds(0));
    manager.addCache(cache);
     
    4.2動的に配置を修正する
    例は以下の通りです
    Cache cache = manager.getCache("demoCache");
    CacheConfiguration config = cache.getCacheConfiguration();
    config.setTimeToIdleSeconds(2);
    config.setTimeToLiveSeconds(100);
    config.setMaxElementsInMemory(1000);
    また、動的な変更設定を無効にすることができます.
    cache.disableDynamicFeatures();
    5.例示コード
    以下は基本的なコード例です.
    import net.sf.ehcache.Cache;
    import net.sf.ehcache.CacheManager;
    import net.sf.ehcache.Element;
    
    public class Demo {
    
        public static void main(String[] args) throws InterruptedException {
          //      CacheManager         ehcahe.xml
            CacheManager  cacheManager = CacheManager.create();
          //   demoCache
            Cache cache = cacheManager.getCache("demoCache");
          //       ,Element       ,         
            Element element = new Element("name", "demo");
          //        demoCache
            cache.put(element);
            Element value = cache.get("name");
          //      ,         ,    ,            ,     ,       
            //cache.flush();
            cacheManager.shutdown();
        }
    }