Ehcache Статистика по ключу - PullRequest
6 голосов
/ 05 января 2010

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

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

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

Ключ А имел 30 попаданий и 2 промаха
Ключ У Б было 400 хитов и 100 промахов
Ключ У C было 2 хита и 1 промах
Ключ D было 150 хитов и 10 промахов

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

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

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

Ответы [ 2 ]

9 голосов
/ 06 сентября 2010

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());
    }
1 голос
/ 21 августа 2013

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

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...