ehcache est une bête extrêmement configurable, et les exemples sont assez complexes, impliquant souvent de nombreuses couches d'interfaces.
Quelqu'un a-t-il rencontré l'exemple le plus simple qui cache simplement quelque chose comme un seul numéro en mémoire (non distribué, pas de XML, aussi peu de lignes de Java que possible). Le nombre est ensuite mis en cache pour disons 60 secondes, puis la prochaine demande de lecture lui fait obtenir une nouvelle valeur (par exemple en appelant Random.nextInt () ou similaire)
Est-il plus rapide/plus facile d'écrire notre propre cache pour quelque chose comme ça avec un singleton et un peu de synchronisation?
Pas de printemps s'il vous plaît.
EhCache est livré avec une configuration à sécurité intégrée qui a un certain délai d'expiration raisonnable (120 secondes). C'est suffisant pour le faire fonctionner.
Importations:
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
Ensuite, créer un cache est assez simple:
CacheManager.getInstance().addCache("test");
Cela crée un cache appelé test
. Vous pouvez avoir plusieurs caches différents et différents, tous gérés par le même CacheManager
. Ajouter (key, value)
paires à ce cache est aussi simple que:
CacheManager.getInstance().getCache("test").put(new Element(key, value));
La récupération d'une valeur pour une clé donnée est aussi simple que:
Element elt = CacheManager.getInstance().getCache("test").get(key);
return (elt == null ? null : elt.getObjectValue());
Si vous tentez d'accéder à un élément après la période d'expiration par défaut de 120 secondes, le cache renverra null (d'où la vérification pour voir si elt
est null). Vous pouvez ajuster la période d'expiration en créant votre propre ehcache.xml
fichier - la documentation pour cela est décente sur le site ehcache.
Une implémentation fonctionnelle de la réponse de jbrookover:
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import net.sf.ehcache.Cache;
public class EHCacheDemo {
public static final void main(String[] igno_red) {
CacheManager cchm = CacheManager.getInstance();
//Create a cache
cchm.addCache("test");
//Add key-value pairs
Cache cch = cchm.getCache("test");
cch.put(new Element("tarzan", "Jane"));
cch.put(new Element("Kermit", "Piggy"));
//Retrieve a value for a given key
Element elt = cch.get("tarzan");
String sPartner = (elt == null ? null : elt.getObjectValue().toString());
System.out.println(sPartner); //Outputs "Jane"
//Required or the application will hang
cchm.removeAllCaches(); //alternatively: cchm.shutdown();
}
}