6

我有兴趣获取有关我正在运行的 Ehcache 的统计信息。

我想查看一段时间内给定键的命中/未命中次数。也许以地图的形式。例如。

在过去的一个小时内(或者无论它运行了多长时间)

键 A 有 30 次命中和 2 次未命中
键 B 有 400 次命中和 100 次未命中
键 C 有 2 次命中和 1 次未命中
键 D 有 150 次命中和 10 次未命中

我查看了文档(SampledCacheStatistics、SampledCacheStatisticsImpl、SampledCacheStatisticsWrapper 等),但我很难弄清楚这一点。

有没有其他人有实现这个的经验?

对此的任何帮助或想法将不胜感激!

4

2 回答 2

8

EhCache Monitor为您提供此类信息... http://ehcache.org/documentation/monitor.html

程序访问可用如下:

    CacheManager cacheManager = CacheManager.getInstance();
    String[] cacheNames = cacheManager.getCacheNames();
    for (int i = 0; i < cacheNames.length; i++) {
        String cacheName = cacheNames[i];
        System.out.println(cacheName+" - "+ cacheManager.getCache(cacheName).getStatistics().toString());
    }
于 2010-09-06T12:03:39.700 回答
1

您不能在每个键的基础上跟踪未命中,因为统计信息存储在缓存中的对象上,如果有未命中,缓存中将没有元素来跟踪它。但是,如果您想要缓存中所有键的命中计数,则需要执行以下操作:

public Map<Object,long> getKeyHits(Ehcache cache)
{
  Map<Object,long> hitMap = new HashMap<Object,long>();
  Map<Object,Element> allElements = cache.getAll(cache.getKeys());
  for (Object key : allElements.keySet())
  {
    hitMap.put(key, allElements.get(key).hitCount());
  }
  return hitMap;
}

如果您希望查看整个缓存上汇总的统计信息(或者您想跟踪未命中),您可以在缓存上调用 getStatistics()。请参阅http://ehcache.org/apidocs/net/sf/ehcache/Ehcache.html

于 2013-08-21T15:01:55.343 回答