Ehcacheのキャッシュデータ

1.ehcaheプロフィール

Ehcacheのはなど、速いリーンで、HibernateはデフォルトのcacheProviderで、プロセスの純粋なJavaのキャッシュフレームワークです。

公式サイトは3.0となっている参照してください。

2.役割

私は、データストアとしてそれを考えると、データが存在してお読みください。キャッシュ事実、キーと値のデータ・ストレージ・ツール。現在、私は、次の2つの方法を使用していました。

まず、データキャッシュデータベース。

これは、データベースへの接続のコストが大きいため、データがキャッシュから直接データを取るために、次のキャッシュされたのごく一部を変更することができました。(データのセキュリティを考慮していません)。

第二は、変数を記憶することです。

バックエンドのWeb開発プロセスでは、いくつかのデータは、次の使用のために保存する必要があります。例えば、SMSの検証コード。私はいつも、マップ、次回を保存したり破壊され、クラスのクラス変数の前にマップを追加します。このような事があり、クラスがインスタンス化されることができた後。クラス変数はメモリにロードされ、データを保存することができます。しかし、クラスの問題を作成し、破壊のライフサイクルについての質問があります。彼は破壊するために行ったときにことを確認してください何をすることはできません。それとも、私はこの1つは勉強しない、制限されている知っています。

だから、キャッシュそれに。データ・キャッシュのサイズは、故障までの時間を提供することができます。

使用するのは簡単3

(1)概要

「ように傾くと高速でEhcacheのは、プロセスの純粋なJavaのキャッシュフレームワークです。

上記2.10.Xに基づき、

 

(2)依存性に関連するパケットを追加のpom.xml

 

<! - ehcacheを缓存包- > 
<依存>
<groupIdを> net.sf.ehcache </ groupIdを>
<たartifactId>にehcache </たartifactId>
</依存関係>

<! -春コンテキスト・サポートキャッシュ機能抽象春パッケージインタフェースに関して- > 
<依存>
<groupIdを> org.springframework </ groupIdを>
<たartifactId>コンテキスト・サポート・春</たartifactId>
</依存関係>

(3)のHelloWorldインスタンスEhcacheのバッファ

1.クラスパスにehcache.xmlプロファイルを追加し、バッファを追加のHelloWorldと呼ばれます
---------------------- -------------------------------------------------- --------------------------------------
<?xmlのバージョン= "1.0"エンコード= "UTF-8"> 
<ehcacheをのxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance"
のxsi:のnoNamespaceSchemaLocation = "のhttp://にehcache .ORG / ehcache.xsd ">
<! -磁盘缓存位置- >
<diskStoreパス=" java.io.tmpdirの/ ehcacheを"/>

<! -默认缓存- >
<defaultCache
maxEntriesLocalHeap =" 10000"
永遠= "偽"
timeToIdleSecondsなど= "120"
timeToLiveSeconds = "120"
maxEntriesLocalDisk = "10000000"
diskExpiryThreadIntervalSeconds = "120"
memoryStoreEvictionPolicy = "LRU" />

<! - HelloWorldの缓存- >
<キャッシュ = "HelloWorldの"
maxElementsInMemory = "1000"
永遠 = "false"を
timeToIdleSecondsなど = "5"
timeToLiveSeconds = "5"
overflowToDisk = "false"を
memoryStoreEvictionPolicy = "LRU" />

</ ehcacheを>
-------------- -------------------------------------------------- ---------------------------------------

<! - <DefaultCache
maxElementsInMemory =「10000」最大メモリキャッシュオブジェクト
永遠=「false」の要素永久かどうかが、セット、タイムアウトは動作しません
timeToIdleSecondsなどを=「120」に配置されたオブジェクトは、障害が発生する前にアイドル状態にできます時間(単位:秒)。永遠=オブジェクトが永続的に使用する、オプションの属性でない場合にのみ、falseの場合、デフォルト値はつまり、アイドル時間が無限大であってもよいし、0です。
timeToLiveSeconds =「120」に設定したオブジェクトは、障害(単位:秒)前の生存時間を可能にします。故障時間と作成の時間との間の最大時間。永遠=偽オブジェクトが永久的な使用ではない場合にのみ、デフォルトでは、被験体の生存時間無限大であり、0.5です。
インメモリ・キャッシュは、ディスクの書き込みにするかどうかmaxInMemory制限要素を達成する際overflowToDisk =「true」が設定されている
maxElementsOnDisk =「10000000」デフォルトのディスクキャッシュサイズが限定されるものではなく、maxElementsOnDiskで指定することができます。ディスクキャッシュは、指定された値のmaxElementsOnDiskに達すると、Ehcacheのは、キャッシュディスクがデフォルトの戦略はLFU(使用の最低周波数)で使用クリアされます。
diskPersistent VMの再起動時に永続ディスクキャッシュ場合、デフォルトはfalse =「false」を。
diskExpiryThreadIntervalSeconds =「120」ディスクキャッシュクリーンアップスレッドの実行間隔は、デフォルトは120秒です。
新しい要素が戦略のキャッシュ要素を削除するために追加がある場合にメモリキャッシュが最大化されているmemoryStoreEvictionPolicy =「LRU」。デフォルトでは、LRU、LFUおよびFIFOがリスナーとして、キャッシュローダー要素に任意で設定可能ですです。
/> - >

<! - <キャッシュ
名=「SampleCache」キャッシュを一意に識別する
maxElementsInMemory =「5」最大メモリキャッシュオブジェクト
maxElementsOnDisk =「100」デフォルトのディスクキャッシュサイズが限定されるものではなく、maxElementsOnDiskで指定することができます。ディスクキャッシュは、指定された値のmaxElementsOnDiskに達すると、Ehcacheのは、キャッシュディスクがデフォルトの戦略はLFU(使用の最低周波数)で使用クリアされます。
永遠=「false」の要素永久かどうかが、セット、タイムアウトは動作しません
timeToIdleSecondsなどを=「2」は失敗(単位:秒)までのアイドル時間にオブジェクトを可能にするために設けられています。永遠=オブジェクトが永続的に使用する、オプションの属性でない場合にのみ、falseの場合、デフォルト値はつまり、アイドル時間が無限大であってもよいし、0です。
timeToLiveSeconds =「2」セットオブジェクトが失敗(単位:秒)前の生存時間を可能にします。故障時間と作成の時間との間の最大時間。永遠=偽オブジェクトが永久的な使用ではない場合にのみ、デフォルトでは、被験体の生存時間無限大であり、0.5です。
overflowToDisk =「true」に設定されたメモリ・キャッシュがmaxInMemory制限要素は、ディスクに書き込むことができる達したときになら
/>

ehcache.xml設定パラメータ:

  • 名前:キャッシュの名前。
  • maxElementsInMemory:キャッシュの最大数。
  • 永遠:キャッシュオブジェクトは永続的なので、タイムアウト設定が無視されている場合、オブジェクトの有効期限が切れることはありません。
  • timeToIdleSecondsなど:(単位:秒)障害が発生する前にオブジェクト許さアイドル時間を置きます。永遠=オブジェクトが永続的に使用する、オプションの属性でない場合にのみ、falseの場合、デフォルト値はつまり、アイドル時間が無限大であってもよいし、0です。
  • timeToLiveSeconds要素が永住者でない場合にのみ有効であることができる建物の崩壊、最大時間間隔からの値の要素であるキャッシュされたデータを生存時間(TTL)値が0の場合は要素が無限に長い一時停止することができることを意味します。時間。
  • maxEntriesLocalDisk:メモリ内のオブジェクトの数がmaxElementsInMemoryに達したときに、Ehcacheのがディスクに書き込ま目指します。
  • overflowToDisk:低メモリ、ディスクキャッシュが有効になっています。
  • diskSpoolBufferSizeMB:このパラメータは、バッファDiskStore(ディスクキャッシュ)のサイズを設定します。デフォルトは30メガバイトです。各キャッシュには、独自のバッファを持っている必要があります。
  • maxElementsOnDisk:ハードディスクキャッシュの最大数。
  • diskPersistent:VMを再起動するかどうかのハードディスクに保存されたキャッシュデータ。デフォルト値はfalseです。
  • diskExpiryThreadIntervalSeconds:ディスクは、スレッドの実行間隔を失敗し、デフォルトは120秒です。
  • memoryStoreEvictionPolicy:maxElementsInMemory上限に達したとき、Ehcacheのは、指定されたポリシーに従って、メモリをクリーンアップするために行きます。デフォルトのポリシーは、LRU(最低使用)です。あなたは、FIFO(First In First Out)メモリまたはLFU(めったに使われない)を設定することができます。
  • clearOnFlush:メモリの最大量を削除するかどうか。


-------------------------------------------------- -------------------------------------------------- ---

2.EhcacheDemo.javaファイル
Ehcacheのは、自動的に名前のクラスパスのルートディレクトリにロードされますehcache.xmlファイルを。
EhcacheDemo作業は、次のとおりです。
EhcacheDemoでは、我々は引用ehcache.xmlの呼び出したステートメントのhelloworld作成するために、キャッシュCacheオブジェクトを、
そして我々は、インスタンス化するために、キーと値のペアを使用してElement、オブジェクトを、
Elementにオブジェクトを追加しCache
その後、使用しCache得るgetメソッドElementオブジェクトを。
-------------------------------------------------- --------------------------------------
パッケージcom.agesun.attendance.web.controller。
輸入net.sf.ehcache.Cache;
輸入net.sf.ehcache.CacheManager。
輸入net.sf.ehcache.Element。
パブリッククラスEhcacheDemo {

パブリック静的無効メイン(文字列[] args){
       //キャッシュマネージャを作成するためにキャッシュマネージャを作成します
)決勝のCacheManagerのCacheManager =新しい新しいのCacheManagerを(;
//キャッシュ「のhelloworld」で作成しますが、参照は名前付きのHelloWorldがキャッシュCacheオブジェクト作成ehcache.xml述べ呼び出され
、最終的なキャッシュキャッシュ= cacheManager.getCacheを(「HelloWorldの」);
//でのデータへの地図への鍵作成
の最終キー文字列=「挨拶を」;
//作成してデータ要素A
最後の要素putGreeting =新しい新しい要素(キー、「こんにちは、世界!」);
プットの//データストア//キャッシュマップキャッシュへのオブジェクトに要素
cache.put(putGreeting);
//キャッシュ要素に対象から得られたデータ要素を取得するが、
最終=要素をgetGreetingをcache.get(キー);
/ /データ要素を取得します
System.out.println(getGreeting.getObjectValue())。
    } 

}
-------------------------------------------------- -------------------------------- 

出力:


(4)Ehcacheの基本的な操作

、のCacheManagerはEhcacle最も重要なAPI要素、キャッシュされ

たキャッシュ・エレメント、キーと値のペアの維持:Elementは
、彼は、Ehcacheのは、コアクラスでより多くの要素、およびCacheManagerの管理、実装をしています。Cacheキャッシュの論理動作
のCacheManager:コンテナオブジェクト・キャッシュとキャッシュは、ライフサイクルを管理します。


4.ehcache基本原則

ehcacheをが使用しているJavaのスレッドセーフなライブラリ、メモリを備えにehcacheを達成するために使用、速度、キャッシュ管理の簡単な実現を、ディスクファイルが保存され、そして分散型柔軟なキャッシュ管理プログラム記憶の様々な方法を。一方ehcacheをオープンとしてソースプログラムは、許可された方法のように、よりリラックスした限界のApacheライセンスV2.0を使用して、それが広くHibernateは、春、繭及び他のに使用されるオープンシステム

三つの主要なモデルのためのEhcacheのクラス階層は、最上層はCacheManagerのある、彼がEhcacheの操作の入り口です。我々は、単一のCacheManager.getInstance()のCacheManagerを介して取得、またはのCacheManagerのコンストラクタによって新しいのCacheManagerを作成することができます。各のCacheManagerは、複数のキャッシュを管理します。それぞれがElemenat複数の関連付けられたクラス・キャッシュのハッシュ方法です。要素は、我々はキャッシュの内容を格納するために使用される場所です。

ehcacheをリフレッシュリフレッシュ政策戦略記録的な時間の中に置かれたキャッシュは、それはTTLコンパレータを取っ同時に設定、レイジー立ち退かせる方法ですときということにehcache

ehcacheを空のキャッシュポリシー3種類:. 1 FIFO、FIFO 2 LFUは、少なくとも使用し、要素がキャッシュヒット値が最小クリアされ、キャッシュヒット属性を持っています。3 LRUキャッシュ容量がいっぱいになっているが、新しい要素のための余地を作るために必要がある場合、最も最近使用されたキャッシュ要素は、タイムスタンプを持っているときにキャッシュ、現在のタイムスタンプ最も遠いから、既存のキャッシュ・エレメントキャッシュ要素がクリアされます。

CacheManagerのキャッシュへの追加や削除は、イベントハンドラが通知されますと、イベント処理は、CacheManagerのにイベントリスナーを追加することができます。イベント処理を設定するには、それはehcacheをプロファイルによって行われる必要があります。あなたは、要素を追加または削除したときに、イベントハンドラが通知されます、キャッシュのキャッシュをイベントリスナーを追加することができます。イベント処理を設定するには、それはehcacheをプロファイルによって行われる必要があります。

おすすめ

転載: www.cnblogs.com/tongcc/p/11269339.html