2013-09-06 6 views
6

Die ehcache Dokumentation sagt:EhCache - Entfernen Sie abgelaufene Element (wegen TimeToIdleSeconds oder TimeToLiveSeconds) ohne versuchen, es zu bekommen?

  • einen Eintrag in myCache Zugriff auf die für mehr als eine Stunde (timeToIdleSeconds) im Leerlauf war bewirkt, daß das Element vertrieben werden.
  • Wenn ein Eintrag abläuft, aber nicht zugegriffen wird und keine Ressourceneinschränkungen die Räumung erzwingen, bleibt der abgelaufene Eintrag bestehen.
  • Wenn Sie ein abgelaufenes Element abrufen, wird es aus dem Cache entfernt und gibt null zurück.

Wenn Sie eine CacheEventListener implementieren und registrieren zu erhalten, dass ein Element abgelaufen ist, können Sie das Ereignis sehen wird ausgelöst, wenn Sie versuchen, ein abgelaufenes Element zu bekommen, aber nicht nach dem ‚timeToIdleSeconds‘.

Ist es möglich, das Entfernen des abgelaufenen Elements zu erzwingen, nachdem es abgelaufen ist? Weil in meinem Fall nach dieser Zeit wird niemand versuchen, es wieder zu bekommen.

Vielen Dank.

+1

siehe auch: http://stackoverflow.com/questions/8838039/ehcache-does-not-remove-element-from-memory-on -eviction – butallmj

Antwort

6

Ich habe es mit dem folgenden Code getan:

cache.evictExpiredElements(); 
cache.flush(); 
+0

Ich tat es in ähnlicher Weise. Ich habe eine Lösung mit AUTO-Evict gesucht, aber es funktioniert. Vielen Dank. – gfjr

+0

Ich wollte es auch automatisch machen, aber es gibt einen Tipp in EhCache docs - 'expired'! =' Removed', also musste ich es manuell machen – skayred

Verwandte Themen