EHCache
Di quando in quando capita di voler utilizzare una cache per conservare il risultato delle elaborazioni, per conservarle sino a che qualche evento non scatta: per esempio nuovi dati disponibili, una modifica su un file o semplicemente se è trascorso molto tempo da quando i dati sono stati elaborati.
Più di dieci anni fa mi ero scritto una cache con un numero limitato di entry, che scartava gli elementi più vecchi. Mi ha servito degnamente per anni ed anni, questa volta invece di continuare a riciclarla ho deciso di fare un giro su google per vedere quali mirabolanti framework java sono usciti in questi anni.
Una delle prime pagine che si trovano è una directory di cache java purtroppo molte delle quali sono morte e defunte o no hanno più nulla da aggiungere da diversi anche, come la vecchia oscache di cui avevo sentito parlare tanto tempo fa.
Una carina che ho trovato si chiama EHCache, parte delle funzionalità sono gratuite (quelle che servono normalmente) mentre altre richiedono una licenza. Visto che a me serve poco più che limitare lo spazio in memoria per i dati ho deciso di provarla.
basta scaricare i jar e metterli nel progetto, copiare il file di configurazione ehcache.xml nella radice dei sorgenti e fare qualche minima modifica – spegnere il supporto per la cache distribuita terracotta che è molto oltre le mie necessità. Per fare questo basta commentare tutte i tag <terracotta/> che si trovano nelle cache di esempio.
Poi nelle classi java bastano un paio di linee di codice
CacheManager cacheManager;
Ehcache cache;cacheManager = CacheManager.newInstance();
cache = cacheManager.getEhcache(“sampleCache2”);
per inizializzare (solo la prima volta) la chache, e poi per inserivi i dati
cache.put(new Element(chiave,oggettoDaSalvare));
invece per leggere
Element cacheElement = cache.get(chiave);
if (cacheElement!=null) {
logger.finest(“cache hit”);
return (MyValueObject) cacheElement.getObjectValue();
}
Niente di più complicato di cosi!
Leave a comment