Статистика Ehcache по ключу

Я хочу получить статистику по запущенному Ehcache.

Я хотел бы увидеть количество попаданий/промахов для данного ключа за определенный период времени. Возможно в виде карты. Например.

За прошедший час (или сколько бы он ни работал)

В ключе A было 30 совпадений и 2 промаха
В ключе B было 400 совпадений и 100 промахов
В ключе C было 2 совпадения и 1 промах
В ключе D было 150 совпадений и 10 промахов

Я просмотрел документацию (SampledCacheStatistics, SampledCacheStatisticsImpl, SampledCacheStatisticsWrapper и т. д.), и мне ужасно трудно понять это.

У кого-нибудь еще был опыт реализации этого?

Любая помощь или идеи по этому поводу будут ОЧЕНЬ оценены!


person Kevin B    schedule 05.01.2010    source источник


Ответы (2)


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());
    }
person Jan    schedule 06.09.2010
comment
Жаль, что Terracotta больше не предоставляет это бесплатно. Вы должны использовать их коммерческий продукт, чтобы использовать монитор ehCache. облом - person Kevin M; 06.10.2014
comment
Это не дает вам статистику по ключу. Просто глобальный - person monzonj; 01.11.2016

Вы не можете отслеживать промахи для каждого ключа, потому что статистика хранится в объекте В кеше, и если бы промах был, в кеше не было бы элемента для его отслеживания. Но если вам нужно количество попаданий для всех ключей в кеше, вам нужно сделать что-то вроде:

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.

person Cameron    schedule 21.08.2013