要件::キャッシング中に、キャッシュ用に提供された最大ヒープサイズを超えると、ディスクにオーバーフローしてそこからフェッチする必要があります。 私のehcacheを設定:Spring ehcache - ディスクからキャッシュが取得されない
cache:
timeToLiveSeconds: 3600
ehcache:
maxBytesLocalHeap: 1M
setMaxBytesLocalDisk: 5G
diskStore: cacheDiskStore
これは(上YMLに提供される値で乗っている)ehcache.xml設定です:
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" name="CM1"
updateCheck="false" maxBytesLocalHeap="1M" maxBytesLocalDisk="1M" maxEntriesLocalDisk="100000">
<!-- This is a default configuration, it is re-configured by the CacheConfiguration
Spring Bean, using the properties from the resources/config/*.yml files. -->
<diskStore path="cacheDiskStore" />
<defaultCache eternal="false" overflowToDisk="true" />
<cache name="cache1" >
<persistence strategy="localTempSwap" />
</cache>
<cache name="cache2" >
<persistence strategy="localTempSwap" />
</cache>
私は大規模なメディアファイルをキャッシュしています。しかし、キャッシュからElementを取得しようとすると、常にnullが返されます。これはキャッシュから取得する方法です。
Element elt = CacheManager.getInstance()
.getEhcache("<cacheName>").get(<key>);
if (elt != null) {
System.out.println("**** Retrieved from cache *****");
return elt;
} else {
System.out.println("**** NOT FOUND IN CACHE *****");
return null;
}
キャッシュからピッキングされていません。 キャッシュヒープサイズを大きくすると、うまく動作します。どんな助け?
こんにちは。ありがとう。どのようにこの追い払いを避けるべきですか? – hack
ヒープサイズを増やしてキャッシュに余裕を持たせることで、自分自身の疑問を解決してください。正確な量とユースケースに最適なものは、テストによって決定されなければなりません。 –