2010-01-05 9 views
6

Ich interessiere mich für Statistiken über den Ehcache, die ich ausgeführt habe.
Ehcache Statistik nach Schlüssel

Ich möchte die Anzahl der Treffer/Fehlschläge für einen bestimmten Schlüssel über einen bestimmten Zeitraum sehen. Vielleicht in Form einer Karte. Beispielsweise.

Für die bestandene Stunde (oder wie lange hat es läuft)

Key A hatte 30 Treffer und 2 misses
Key B hatte 400 Treffer und 100 Misses
Key C hatte 2 Treffer und 1 Misses
Key D hatte 150 Treffer und 10 misses

ich durch die Dokumentation ausgesehen haben (SampledCacheStatisti cs, SampledCacheStatisticsImpl, SampledCacheStatisticsWrapper, etc) und ich habe eine schreckliche Zeit, dies herauszufinden.

Hat jemand andere Erfahrung mit der Umsetzung dieser?

Jede Hilfe oder Ideen zu diesem wäre VIEL geschätzt!

Antwort

9

Die EhCache Monitor gibt Ihnen diese Art von Informationen ... http://ehcache.org/documentation/monitor.html

Programmatischer Zugriff ist wie folgt erhältlich:

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()); 
    } 
+0

Schade Terracotta bietet diese nicht mehr kostenlos. Sie müssen mit ihrem kommerziellen Produkt gehen, um den ehCache-Monitor zu verwenden. Bummer –

+0

Dies gibt Ihnen nicht die Statistiken pro Schlüssel. Einfach global – monzonj

1

Sie können nicht verfehlt Spur auf einer Pro-Schlüssel Grundlage, weil die Statistiken gespeichert auf Objekt im Cache und wenn es ein Miss gab, würde es kein Element im Cache geben, um es zu verfolgen. Aber wenn Sie eine Trefferzahl für alle Schlüssel in einem Cache wollen, müssen Sie würde so etwas wie zu tun:

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; 
} 

Wenn Sie lieber Statistiken über einen gesamten Cache aggregiert sehen würde (oder Sie wollen Misses verfolgen), können Sie getStatistics() im Cache aufrufen. Siehe http://ehcache.org/apidocs/net/sf/ehcache/Ehcache.html.