EHCache

Z FI WIKI
Přejít na: navigace, hledání

Obecné informace

URL: http://ehcache.sourceforge.net/ Tento framework je velmi jednoduchý na použití i nastavení.

Singleton vs. instance

Všechna použití tohoto frameworku začínají s vytvoření managera (CacheManager). Tento objekt se může vytvořit a používat jako singleton nebo jako nová instance třídy.

Jednoduchý příklad vytvoření managera a získání názvů všech dostupných vyrovnávacích pamětí.

 
CacheManager.create();
String[] cacheNames = CacheManager.getInstance().getCacheNames();
 
CacheManager manager = new CacheManager();
String[] cacheNames = manager.getCacheNames();

Ke konfiguraci vyrovnávací paměti se používá xml soubor, který definuje vlastnosti managera. Tato konfigurace nemusí být v systému jediná (ve smyslu jediný soubor). Lze vytvořit managera podle zadané konfigurace.

 
CacheManager manager = new CacheManager ("src/config/ehcache1.xml")

V tomto případě vytvoří manager paměti definované v souboru echcache1.xml. Pokud není soubor zadán, použije se soubor ehcache.xml, který by měl být viditelný v classpath.

Pro přístup do paměti slouží objekt Cache. Ten může být načten pomocí managera nebo se může vytvořit nová instance, která se následně do managera přidá.

 
CacheManager singletonManager = CacheManager.create();
 
Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
 
manager.addCache(memoryOnlyCache);

Odstranění cache

 
CacheManager singletonManager = CacheManager.create();
 
singletonManager.removeCache("sampleCache1");

Po použití by měl být manager ukončen pomocí metody manager.shutdown()

CRUD operace

Použití objektů je velice jednoduché a intuitivní.

Získání instance cache

Cache cache = manager.getCache("sampleCache1");


Vložení elementu do paměti

 
Cache cache = manager.getCache("sampleCache1");
Element element = new Element("key1", "value1");
cache.put(element);

Pro aktualizaci se používá stejná metoda jako pro vložení. Systém rozezná, že se jedná o element, který v cache už je a provede jeho aktualizaci. Vložení ale považuje za aktualizaci a upozorní všechny příslušné posluchače.

 
Cache cache = manager.getCache("sampleCache1");
cache.put(new Element("key1", "value1");
//aktualizace
cache.put(new Element("key1", "value2");

Serializovatelnost

Hodnota se může vybrat jako serializovatelná a neserializovatelná

 
Cache cache = manager.getCache("sampleCache1");
Element element = cache.get("key1");
Serializable value = element.getValue();
 
Cache cache = manager.getCache("sampleCache1");
Element element = cache.get("key1");
Object value = element.getObjectValue();

Odstranění hodnoty z paměti

 
Cache cache = manager.getCache("sampleCache1");
Element element = new Element("key1", "value1"
cache.remove("key1");

Uložení na disk na požádání

sampleCache1 obsahuje možnost uložit obsah paměti na disk. Následující metoda zapíše data okamžitě na disk.

 
Cache cache = manager.getCache("sampleCache1");
cache.flush();

Zjišťování velikosti pamětí

počet elementů v paměti

 
Cache cache = manager.getCache("sampleCache1");
int elementsInMemory = cache.getSize();

počet elementů v úložišti v operační paměti

 
Cache cache = manager.getCache("sampleCache1");
 
long elementsInMemory = cache.getMemoryStoreSize();

počet elementů v uložišti na disku

 
Cache cache = manager.getCache("sampleCache1");
long elementsInMemory = cache.getDiskStoreSize();

Statistiky

Tyto hodnoty jsou lepší pro vylepšování nastavení vyrovnávací paměti.

Počet nalezení položek v paměti

 
Cache cache = manager.getCache("sampleCache1");
 
int hits = cache.getHitCount();
 

Počet nalezení položek v operační paměti

 
Cache cache = manager.getCache("sampleCache1");
 
int hits = cache.getMemoryStoreHitCount();
 

Počet nalezení položek na disku

 
Cache cache = manager.getCache("sampleCache1");
 
int hits = cache.getDiskStoreCount();
 

Počet položek, které nebyly v paměti nalezeny

 
Cache cache = manager.getCache("sampleCache1");
 
int hits = cache.getMissCountNotFound();

Počet položek, které nebyly v paměti nalezeny z důvodu vypršení jejich platnosti

 
Cache cache = manager.getCache("sampleCache1");
 
int hits = cache.getMissCountExpired();

Vytvoření cache podle základního nastavení

Vytvoření paměti s daným jménem

 
manager.addCache("cache name");

Vytvoření paměti s nastavením

Parametry lze nastavit v konstruktoru.

 
public Cache(
    String name,
    int maxElementsInMemory,
    MemoryStoreEvictionPolicy memoryStoreEvictionPolicy,
    boolean overflowToDisk,
    boolean eternal,
    long timeToLiveSeconds,
    long timeToIdleSeconds,
    boolean diskPersistent,
    long diskExpiryThreadIntervalSeconds) {
    ...
   }
 
   //Create a CacheManager using defaults
   CacheManager manager = CacheManager.create();
 
   //Create a Cache specifying its configuration.
   Cache testCache = new Cache("test", maxElements, MemoryStoreEvictionPolicy.LFU, true, false, 60, 30, false, 0);

V okamžiku, kdy je paměť vytvořená musí přidat do seznamu pamětí udržovaných v manageru:

 
manager.addCache(testCache);

Pokud se tak nestane, paměť nebude použitelná.