0
要求:在緩存過程中,如果爲緩存提供的最大堆大小超過,它應該溢出到磁盤並從那裏獲取它。 我的Ehcache配置:彈簧ehcache - 緩存沒有從磁盤中檢索
cache:
timeToLiveSeconds: 3600
ehcache:
maxBytesLocalHeap: 1M
setMaxBytesLocalDisk: 5G
diskStore: cacheDiskStore
這是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 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
當你在你的問題中陳述自己時,通過增加堆大小給緩存留出更多空間。確切的數量和最適合您的用例必須通過測試來確定。 –