0
我配置了Ehcache作爲下一:的Ehcache錯過數和命中率統計
<cache name="test-cache"
maxEntriesLocalHeap="50"
maxEntriesLocalDisk="50"
eternal="false"
diskSpoolBufferSizeMB="10"
timeToIdleSeconds="90"
timeToLiveSeconds="60"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off">
<persistence strategy="localTempSwap"/>
</cache>
而下面的代碼使用它:
Ehcache cache = CacheManager.getInstance().getCache("test-cache");
cache.setStatisticsEnabled(true);
cache.setStatisticsAccuracy(Statistics.STATISTICS_ACCURACY_GUARANTEED);
/* put 100 elements */
for (int i = 1; i <= 100; i++) {
cache.put(new Element("key-"+i, "value-"+i));
}
/* hit 100 elements in cache 10000 times */
for (int i = 1; i <= 100; i++) {
for (int j = 1; j <= 100 ; j++) {
cache.get("key-"+j);
}
}
/* consider values of misses, onDiskMisses, inMemoryMisses */
System.out.println("Statistics = " + cache.getStatistics().toString());
我已經準備了簡單的一類演示中,你可以運行https://github.com/Bezuhlyi/ehcahce-statistics-test
你可以看到,錯過!= inMemoryMisses + offHeapMisses + onDiskMisses。
問題是實際上Statistics.getCacheMisses()重要?
此外,自然緩存命中率=命中/(命中+未命中)。那麼知道Ehcache實例的實際命中率的正確方法是什麼?
我還沒有發現它在文檔中沒有任何用處,以及有關SampledCacheStatistics的用途。
'cacheHits = 5180' 'inMemoryHits = 4664' 'onDiskHits = 516' '命中= 4820' 'onDiskMisses = 4820' 'inMemoryMisses = 5336' 現在,看到這個數字,我可以說,你是對的。謝謝。 –
當我們需要[** SampledCacheStatistics **](http://ehcache.org/apidocs/2.6.5/net/sf/ehcache/statistics/sampled/SampledCacheStatistics.html)或者它的用法是什麼時? –