Caching mit OSCache Teil 2

Zentrales Element im OSCache sind die konkreten Implementierungen der AbstractCacheAdministrators Klasse. OSCache bietet zwei Implementierungen:

Die Funktionsweise eines CacheAdministrators ähnelt einer HashMap, geht aber weit darüber hinaus. So können Cache-Einträge ablaufen und müssen bei erneuten Zugriffsversuch erneuert werden. Auch die Anzahl von Cache-Einträgen soll limitiert werden. Mit der Methode setAlgorithmClass(String clazz) kann der Algorithmus konfiguriert werden.
Zur Verfügung stehen:

  • FIFOCache
  • LRUCache
  • UnlimitedCache

Beispiel:
Das nachfolgende Beispiel verwendetet einen FIFOCache mit max. 20 Cache-Einträgen. Unter dem Key “myKey” wird ein String in den Cache abgelegt und anschliessend 2x darauf zugegriffen. Beim zweiten Mal ist dieses Objekt “abgelaufen” und muss erneuert werden.

  1. GeneralCacheAdministrator cAdmin = new GeneralCacheAdministrator();
  2.         cAdmin.setAlgorithmClass("com.opensymphony.oscache.base.algorithm.FIFOCache");
  3.         cAdmin.setCacheCapacity(20);
  4.  
  5.         cAdmin.putInCache("myKey", "myObject");
  6.  
  7.         // first attempt to access the cache object
  8.         try {
  9.             System.out.println(cAdmin.getFromCache("myKey", 2));
  10.             // OK, object is not "older" than 2 seconds
  11.         } catch (NeedsRefreshException nre) {
  12.             System.out.println("expired object:=" + nre.getCacheContent());
  13.         }
  14.  
  15.         // Sleep 3 seconds
  16.         Thread.currentThread().sleep(3000);
  17.         try {
  18.             System.out.println(cAdmin.getFromCache("myKey", 2));
  19.             // NOT OK, object is definately older than 2 seconds
  20.             // --> NeedsRefreshException will be thrown
  21.         } catch (NeedsRefreshException nre) {
  22.             System.out.println("expired object:=" + nre.getCacheContent());
  23.         }
  24.  
  25.         cAdmin.destroy();

Ausgabe:
myObject
expired object:=myObject

Das Cachingframework bietet zusätzlich eine eigene JSP-Taglibrary und einen Servlet-Filter, der transparent für die Applikation ganze Seiten oder binäre Dateien cachen kann. Mehr dazu im 3. Teil.

Bookmark and Share

2 Responses to “Caching mit OSCache Teil 2”

  1. stejan Says:

    Hi Heiko

    Hab noch zwei kleine Details:

    In Zeile 1 erzeugst du eine Variable cAdmin
    und in Zeile 25 rufst du cacheAdmin.destroy() auf

    ich denke mal es müsste cAdmin.destroy heissen.

    Dann stimmt die Doku in Zeile 15 nicht mit der Implementation in Zeile 16 überein

    Aber sonst, cool
    Danke für den Eintrag Ist Intressant

  2. HeikoMaass Says:

    Korrigiert. Vielen Dank für den Hinweis !

Leave a Reply