Gestire la cache in Java con JCache

Mattepuffo's logo
Gestire la cache in Java con JCache

Gestire la cache in Java con JCache

JCache è una "libreria" (in realtà non saprei come definirla) che ci permette di gestire la cache nelle nostre applicazioni in Java.

Ha tutta una serie di interfacce per la gestione della cache, ma bisogna indicare, e quindi installare, una sua implementazione.

Per il nostro esempio, se avete maven, aggiungete queste dipendenze:

    <dependencies>
        <dependency>
            <groupId>javax.cache</groupId>
            <artifactId>cache-api</artifactId>
            <version>1.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>3.9.6</version>
        </dependency>
    </dependencies>

Fatto questo, qui sotto un esempio:

import javax.cache.Cache;
import javax.cache.CacheManager;
import javax.cache.Caching;
import javax.cache.configuration.MutableConfiguration;
import javax.cache.expiry.CreatedExpiryPolicy;
import javax.cache.expiry.Duration;

public class Main {
  public static void main(String[] args) {
    String cacheName = "myCache";

    CacheManager cacheManager = Caching.getCachingProvider().getCacheManager();

    MutableConfiguration<String, String> cacheConfig = new MutableConfiguration<>();
    cacheConfig.setStoreByValue(false);
    cacheConfig.setTypes(String.class, String.class);
    cacheConfig.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.ONE_MINUTE));
    cacheConfig.setManagementEnabled(true);
    cacheConfig.setStatisticsEnabled(true);

    // CREO LA CACHE CON LA CONFIGURAZIONE SETTATA SOPRA
    Cache<String, String> cache = cacheManager.createCache(cacheName, cacheConfig);
    cache.put("key1", "value1");
    cache.put("key2", "value2");

    // VISUALIZZO UN VALORE
    System.out.println(cache.get("key1"));

    // MODIFICO UN VALORE E LO VISUALIZZO DI NUOVO
    cache.put("key1", "valueUp");
    System.out.println(cache.get("key1"));

    // LOOP SU TUTTA LA CACHE
    Cache<String, String> getAllCache = cacheManager.getCache(cacheName);
    for (Cache.Entry<String, String> currentEntry : getAllCache) {
      System.out.println("Key: " + currentEntry.getKey() + " Value: " + currentEntry.getValue());
    }

    cacheManager.close();
  }
}

Vi ho messo qualche commento.

Enjoy!


Condividi

Commentami!