ehcacheキャッシュ構成

18809 ワード

Ehcacheキャッシュ構成
Cacheの配置は柔軟で、公式に提供されているCacheの配置方式はいくつかあります.構成を宣言したり、xmlで構成したり、プログラムで構成したり、構築方法を呼び出したりすることで、異なるパラメータを入力することができます. 
Cacheの構成をコードから剥離したり、実行時構成を使用したりすることができます.実行時構成とはコードで構成することにほかならません.以下に、ランタイム構成のメリットを示します.
  • すべてのCacheを同じ場所に配置することで、Cacheのメモリとディスクの消費量を管理しやすくなります.
  • リリース時にCache構成を変更できます.
  • は、再インストールフェーズで構成エラー情報を検出し、ランタイムエラーを回避することができる. 

  • 本文はehcache.xmlプロファイルについて詳しく説明します.構成時に既存のehcacheをコピーすることができる.xml, 
    CacheManagerのデフォルトの構築メソッドを呼び出してCacheManagerのインスタンスを作成すると、classpathにehcacheが見つかります.xmlファイルです.そうしないと、クラスパスの下でehcache-failsafeを探します.xmlファイル.そしてehcache-failsafe.xmlはjarパッケージに含まれており、すべてが見つかるに違いありません. 
    ehcache-failsafe.xmlは非常に簡単なデフォルト構成を提供し、ehcacheを作成しないようにすることができる.xmlの場合はEhcacheを使用します.ただし、このようにすると、Ehcacheはユーザーに正しいEhcache構成を作成するように注意します. 
    ehcache.xmlクリップ:
    <ehcache>
    
        <diskStore path="java.io.tmpdir"/>
    
        <defaultCache
    
                maxElementsInMemory="10000"
    
                eternal="false"
    
                timeToIdleSeconds="120"
    
                timeToLiveSeconds="120"
    
                overflowToDisk="true"
    
                maxElementsOnDisk="10000000"
    
                diskPersistent="false"
    
                diskExpiryThreadIntervalSeconds="120"
    
                memoryStoreEvictionPolicy="LRU"
    
                />
    
    </ehcache>

    Ehcache-1.6以前のバージョンでは、ASCII符号化ehcacheのみがサポートされていた.xmlプロファイル.Ehcach-1.6以降のバージョンでは、UTF 8符号化ehcacheがサポートする.xmlプロファイル.後方互換性のため、ASCII符号化されたすべてのプロファイルをUTF 8に変換する必要はありません. 
    CacheManagerにはXML構成が必要です.ディスクパスまたはリスニングポートのため、複数のCacheManagerが同じプロファイルを使用している場合にエラーが発生します. 
    次はehcacheです.xmlの具体的な例と構成ガイド
    CacheManager構成DmulticastGroupポート=4446で、リスニングポートを構成できます. 
  • DiskStore構成
  • DiskStore(ディスクキャッシュ)を使用している場合は、DiskStoreプロファイルを構成する必要があります.構成しない場合、Ehcacheはjavaを使用します.io.tmpdir. 
    diskStroeのpath属性は、ディスクキャッシュに使用する物理パスを構成するために使用され、Ehcacheディスクキャッシュに使用するファイル接尾辞名は.dataと.index. 
     
  • CacheManagerEventListener構成
  • CacheManagerEventListenerFactoryでCacheManagerPeerProviderをインスタンス化できます.CacheManagerからaddedとremoved Cacheを追加すると、CacheManagerPeerProviderに通知されます.これにより、CacheManagerのCacheを統計することができます. 
    CacheManagerに登録されているイベントリスニングクラス名は、adding a Cacheとremoving a Cacheです.
     
  • CacheManagerPeerProvider構成
  • CacheManagerでCacheManagerPeerProviderFactoryを構成してCacheManagerPeerProviderを作成します.具体的な例は次のとおりです.
    RMICacheManagerPeerProviderFactory"
    properties="peerDiscovery=manual, rmiUrls=//server1:40000/sampleCache1|//server2:40000/sampleCache1|//server1:40000/sampleCache2|//server2:40000/sampleCache2"
    propertySeparator=","/>
  • CacheManagerPeerListener構成
  • CacheManagerPeerListener構成は、クラスタ内のキャッシュ・メッセージの配布を傍受するために使用されます. 
        class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
        properties="hostName=fully_qualified_hostname_or_ip,
                    port=40001,
                    socketTimeoutMillis=120000"
                    propertySeparator=","/>
  • Cache構成
  • name:Cacheの一意の識別子
  • maxElementsInMemory:メモリ内の最大キャッシュオブジェクト数.
  • maxElementsOnDisk:ディスク内の最大キャッシュオブジェクト数は、0の場合無限大です.
  • eternal:Elementが永続的に有効かどうかは、設定されているとtimeoutは機能しません.
  • overflowToDisk:メモリ内のElement数がmaxElementsInMemoryに達すると、EhcacheはディスクにElementを書き込みます.
  • timeToIdleSeconds:有効期限が切れるまでの猶予期間を設定します.つまり、1つのバッファ・アイテムが期限切れになる前に、2回のアクセス間隔の最大時間です.キャッシュ・アイテムが非永続の場合にのみ有効です.0はアイドル時間に制限されず、デフォルトは0です.
  • timeToLiveSeconds:Elementが無効になる前に生存時間を許可するように設定します.最大時間は作成時間と失効時間の間です.elementが永続的に有効でない場合にのみ使用され、デフォルトは0です.すなわちelementの生存時間は無限大である.
  • diskPersistent:VMの再起動時にディスクキャッシュを永続化するかどうか.
  • diskExpiryThreadIntervalSeconds:ディスクに保存されている期限切れキャッシュ・アイテムのスレッドの開始間隔を消去します.デフォルトでは120秒です.
  • diskSpoolBufferSizeMB:ディスク・バッファのサイズ.ディスクに書き込まれた内容は、この領域にバッファリングされ、非同期でディスクに書き込まれます.デフォルトの30 MBでは、各キャッシュは独立したバッファを使用します.OutOfMemoryエラーが発生した場合は、この値を小さくしてみます.ディスク書き込みのパフォーマンスを向上させる場合は、この値を増やしてみます.ログレベルをTraceに設定し、DiskStoreがディスク書き込みを実行すると、対応するログ
  • が表示されます.
  • statistics:統計を収集するかどうか.キャッシュの使用状況を監視する必要がある場合は、このオプションをオンにします.デフォルトはオフです(統計値はパフォーマンスに影響します).statistics=「true」を設定して統計を開きます.
  • memoryStoreEveictionPolicy:maxElementsInMemoryの制限に達すると、Ehcacheは指定したポリシーに従ってメモリをクリーンアップします.
  • LRU -least recently used LFU -least frequently used FIFO-first in first out

  • サブエレメントを使用することで、キャッシュ領域の永続化ポリシーを構成できます.要素の主なプロパティは、strategy:キャッシュ領域の永続化のタイプを構成します.オプションの値は次のとおりです.localRestartable:Ehcacheエンタープライズ版を使用する場合にのみ有効です.RestartStoreを有効にして、すべてのキャッシュ・アイテム(スタックと非スタックを含む)をディスクにコピーします.このオプションは、キャッシュの高速再起動機能と、ディスク上のキャッシュに対するフォールトトレランス機能を提供します.localTempSwap:キャッシュ容量が上限に達した場合、キャッシュオブジェクト(スタックと非スタックを含む)をディスクに交換します.「localTempSwap」は、キャッシュ・コンテンツを永続化しません.none:キャッシュ内容を永続化しません.distributed:ラベル構成の永続化に従って実行します.このオプションは、分散されていない配置では使用できません.synchronousWrites:この属性はstrategy=「localRestartable」の場合にのみ意味があります.デフォルトfalse.trueに設定すると、キャッシュ・ライト・メソッドは、キャッシュ・アイテムがディスクに正常に書き込まれるまで返されません.
  • Cache Exception Handling構成
  • class="com.example.ExampleExceptionHandlerFactory"    
    properties="logLevel=FINE"/> 
    ここでは、汎用キャッシュの構成についてのみ詳細に説明し、RMIキャッシュおよびクラスタキャッシュについてはここを参照することができる.
    以下に、いくつかの構成例を示します.
    ・EhcacheデフォルトCache構成
    <defaultCache
    
            maxElementsInMemory="10000"
    
            eternal="false"
    
            timeToIdleSeconds="120"
    
            timeToLiveSeconds="120"
    
            overflowToDisk="true"
    
            diskSpoolBufferSizeMB="30"
    
            maxElementsOnDisk="10000000"
    
            diskPersistent="false"
    
            diskExpiryThreadIntervalSeconds="120"
    
            memoryStoreEvictionPolicy="LRU"        />
  • SampleCache 1構成
  • 簡単な構成でehcache.xmlファイルにはこの構成があります.Ehcacheを使用する前に削除して、自分で構成したほうがいいです. 
    キャッシュ名sampleCache 1は、メモリに最大10,000個のElementをキャッシュできます.elementは、アイドル状態で5分または10分後に失効します. 
    10000 elementを超えると、elementはjavaの出力経路でディスクに出力されます.io.tmpdir. 
    <cache name="sampleCache1"
    
           maxElementsInMemory="10000"
    
           maxElementsOnDisk="1000"
    
           eternal="false"
    
           overflowToDisk="true"
    
           diskSpoolBufferSizeMB="20"
    
           timeToIdleSeconds="300"
    
           timeToLiveSeconds="600"
    
           memoryStoreEvictionPolicy="LFU"/> 
  • SampleCache 2構成
  • Cache名はSampleCache 2で、メモリには最大1000個のelementをキャッシュでき、1000を超えるとディスクに出力できません.キャッシュは永続的に有効です. 
    <cache name="sampleCache2"
    
           maxElementsInMemory="1000"
    
          eternal="true"
    
           overflowToDisk="false"
    
           memoryStoreEvictionPolicy="FIFO" /> 
  • SampleCache 3構成
  • Cacheの名前はSampleCache 3です.ディスクにキャッシュできます.ディスク・キャッシュは、仮想マシンの再起動期間のデータをキャッシュします.ディスクキャッシュの無効なスレッドの実行間隔は10分です. 
    <cache name="sampleCache3"
    
           maxElementsInMemory="500"
    
           eternal="false"
    
           overflowToDisk="true"
    
           timeToIdleSeconds="300"
    
           timeToLiveSeconds="600"
    
           diskPersistent="true"
    
          diskExpiryThreadIntervalSeconds="1"
    
           memoryStoreEvictionPolicy="LFU" /> 
  • sampleDistributedCache 1構成
  • Cache名はsampleDistributedCache 1です. 
    <cache name="sampleDistributedCache1"
    
           maxElementsInMemory="10"
    
           eternal="false"
    
           timeToIdleSeconds="100"
    
           timeToLiveSeconds="100"
    
          overflowToDisk="false">
    
        <cacheEventListenerFactory
    
                class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
    
        <bootstrapCacheLoaderFactory
    
                class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>
    
    </cache> 
  • sampleDistributedCache 2構成
  • <cache name="sampleDistributedCache2"
    
           maxElementsInMemory="10"
    
           eternal="false"
    
           timeToIdleSeconds="100"
    
           timeToLiveSeconds="100"
    
           overflowToDisk="false">
    
        <cacheEventListenerFactory
    
                class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
    
                properties="replicateAsynchronously=false, replicatePuts=false,
    
                            replicateUpdates=true, replicateUpdatesViaCopy=true,
    
                            replicateRemovals=false"/>
    
    </cache> 
  • sampleDistributedCache 3構成
  • <!--
    
    Sample distributed cache named sampleDistributedCache3.
    
    This cache replicates using defaults except that the asynchronous replication
    
    interval is set to 200ms.
    
    -->
    
    <cache name="sampleDistributedCache3"
    
           maxElementsInMemory="10"
    
           eternal="false"
    
           timeToIdleSeconds="100"
    
           timeToLiveSeconds="100"
    
           overflowToDisk="false">
    
        <cacheEventListenerFactory
    
                class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
    
                properties="asynchronousReplicationIntervalMillis=200"/>
    
    </cache>
  • クイック再起動cache構成
  •      <cache  name="example4Cache"
    
                maxElementsInMemory="100"
    
                eternal="false"
    
                timeToIdleSeconds="0"
    
                timeToLiveSeconds="259200"
    
                overflowToOffHeap="true"
    
                maxMemoryOffHeap="1024M"
    
                memoryStoreEvictionPolicy="LRU"
    
                statistics="true">
    
                <persistence strategy="localRestartable" synchronousWrites="false"/>
    
        </cache>

     

  •