ehcacheキャッシュの学習と使用の概要

ehcacheキャッシュの学習と使用の概要

1.キャッシュ構成

name:キャッシュ名。

maxElementsInMemory:キャッシュの最大数。

eternal:オブジェクトが永続的に有効かどうか、一度設定すると、タイムアウトは機能しません。

timeToIdleSeconds:オブジェクトが無効になるまでの許容アイドル時間(単位:秒)を設定します。eternal = falseオブジェクトが永続的に有効でない場合にのみ使用されます。オプションの属性。デフォルト値は0です。つまり、アイドル時間は無限です。

timeToLiveSeconds:オブジェクトが期限切れになるまでの許容生存時間(単位:秒)を設定します。最大時間は、作成時間と有効期限の間です。これは、eternal = falseオブジェクトが永続的に有効ではない場合にのみ使用され、デフォルトは0です。つまり、オブジェクトの有効期間は無限です。

overlayToDisk:メモリ内のオブジェクトの数がmaxElementsInMemoryに達すると、Ehcacheはオブジェクトをディスクに書き込みます。

diskSpoolBufferSizeMB:このパラメーターは、DiskStore(ディスクキャッシュ)のバッファーサイズを設定します。デフォルトは30MBです。各キャッシュには独自のバッファが必要です。

maxElementsOnDisk:ハードディスクキャッシュの最大数。

diskPersistent:仮想マシンの再起動期間中にデータをキャッシュするかどうか。仮想マシンの再起動間でディスクストアが持続するかどうか。デフォルト値はfalseです。

diskExpiryThreadIntervalSeconds:ディスク障害スレッドの実行間隔。デフォルトは120秒です。

memoryStoreEvictionPolicy:maxElementsInMemory制限に達すると、Ehcacheは指定されたポリシーに従ってメモリをクリーンアップします。デフォルトの戦略はLRU(最近使用されていない)です。FIFO(ファーストインファーストアウト)またはLFU(あまり使用されない)に設定できます。

clearOnFlush:メモリの量が最大になったときにクリアするかどうか。

2.ehcache.xmlファイル:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache updateCheck="false" name="hibernateCache">

    <diskStore path="java.io.tmpdir/ehcache/hibernateCache" />

    <!-- DefaultCache setting. -->
    <defaultCache maxEntriesLocalHeap="10000" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600"
        overflowToDisk="true" maxEntriesLocalDisk="100000" />

</ehcache>

3.EhcacheUtilクラス

public class EhcacheUtil {  

    private static final String path = "/ehcache.xml";  

    private URL url;  

    private CacheManager manager;  

    private static EhcacheUtil ehCache;  

    private EhcacheUtil(String path) {  
        url = getClass().getResource(path);  
        manager = CacheManager.create(url);  
    }  

    public static EhcacheUtil getInstance() {  
        if (ehCache== null) {  
            ehCache= new EhcacheUtil(path);  
        }  
        return ehCache;  
    }  

    public void put(String cacheName, String key, Object value) {  
        Cache cache = manager.getCache(cacheName);  
        Element element = new Element(key, value);  
        cache.put(element);  
    }  

    public Object get(String cacheName, String key) {  
        Cache cache = manager.getCache(cacheName);  
        Element element = cache.get(key);  
        return element == null ? null : element.getObjectValue();  
    }  

    public Cache get(String cacheName) {  
        return manager.getCache(cacheName);  
    }  

    public void remove(String cacheName, String key) {  
        Cache cache = manager.getCache(cacheName);  
        cache.remove(key);  
    }  

}

4.Spring + EhCacheキャッシュ

<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
    <property name="configLocation">
        <value>classpath:cache/ehcache-spring.xml</value>
    </property>
    <!-- 由于hibernate也使用了Ehcache, 保证双方都使用同一个缓存管理器 -->
    <property name="shared" value="true"/>
</bean> 

おすすめ

転載: blog.csdn.net/ampsycho/article/details/77750084