Scadenza dei dati in JCache
Questa pagina spiega come utilizzare le policy di scadenza di JCache NCache. La pagina descrive in dettaglio i prerequisiti necessari per utilizzare JCache NCache, insieme a frammenti di codice che dimostrano le diverse politiche di scadenza offerte da JCache.
Prerequisiti per la scadenza dei dati in JCache
- Per utilizzare JCache con NCache Professional, sostituisci il
ncache-client
conncache-professional-client
nel tuo pom.xml.
<dependency>
<groupId>com.alachisoft.ncache</groupId>
<artifactId>ncache-client</artifactId>
<version>x.x.x</version>
</dependency>
Importa i seguenti pacchetti nella tua applicazione:
import javax.cache.CacheManager;
import javax.cache.Caching;
import javax.cache.spi.CachingProvider;
Assicurati che i dati siano serializzati o registrati con NCache Formato di serializzazione.
- Assicurati che la cache sia inizializzata e in esecuzione.
Aggiungi articoli con scadenza accessibile
Note:
JCache Scadenza effettuata l'accesso si comporta in modo simile a NCache'S Scadenza scorrevole. Tuttavia, Scadenza effettuata l'accesso non include gli aggiornamenti della cache.
La data di scadenza di un elemento della cache nel file AccessedExpiryPolicy
si basa sull'ora dell'ultimo accesso. L'esempio seguente crea un'istanza del provider di memorizzazione nella cache di JCache per far passare l'istanza di JCacheManager NCache, crea quindi un file di configurazione specificando la data di scadenza di un elemento della cache.
// Get instance of JCacheManager.
CacheManager manager = Caching.getCachingProvider().getCacheManager();
//We are creating a config for object accessed expiration.
//It defines the expiry Duration of a Cache Entry based on the last time it was accessed.
//Accessed does not include a cache update.
MutableConfiguration<String, Product> config = new MutableConfiguration<>();
config.setExpiryPolicyFactory(FactoryBuilder.factoryOf(new AccessedExpiryPolicy(Duration.FIVE_MINUTES)));
//Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.createCache("demoCache", config);
Product product = new Product();
product.setProductID("Product:1001");
product.setProductName("Coffee");
product.setPrice(100);
jCache.put("Product:1001", product);
Aggiungi articoli con scadenza creata
Note:
JCache Scadenza creata si comporta in modo simile a NCache'S Scadenza assoluta.
La data di scadenza di un elemento della cache nel file CreatedExpiryPolicy
si basa sul tempo di creazione. Pertanto, qualsiasi aggiornamento all'elemento della cache non reimposta la scadenza. L'esempio seguente aggiunge un elemento della cache con il file CreatedExpiryPolicy
.
// Get instance of JCacheManager.
CacheManager manager = Caching.getCachingProvider().getCacheManager();
//We are creating a config for object creation expiration.
//It defines the expiry Duration of a Cache Entry based on when it was created.
//An update does not reset the expiry time.
MutableConfiguration<String, Product> config = new MutableConfiguration<>();
config.setExpiryPolicyFactory(FactoryBuilder.factoryOf(new CreatedExpiryPolicy(Duration.FIVE_MINUTES)));
//Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.createCache("demoCache", config);
Product product = new Product();
product.setProductID("Product:1001");
product.setProductName("Coffee");
product.setPrice(100);
jCache.put("Product:1001", product);
Aggiungi articoli con scadenza modificata
Note:
JCache Scadenza modificata si comporta in modo simile a NCache Scadenza scorrevole. Tuttavia, la scadenza modificata include l'aggiornamento, la modifica e la creazione di una voce.
Il ModifiedExpiryPolicy
definisce il tempo di scadenza della voce della cache sulla base del suo ultimo aggiornamento. L'aggiornamento può essere qualsiasi modifica nella voce. L'esempio seguente aggiunge un elemento con ModifiedExpiryPolicy
nella cache.
// Get instance of JCacheManager.
CacheManager manager = Caching.getCachingProvider().getCacheManager();
//We are creating a config for object modified expiration.
//It defines the expiry Duration of a Cache Entry based on the last time it was updated.
//Updating includes created and changing (updating) an entry.
MutableConfiguration<String, Product> config = new MutableConfiguration<>();
config.setExpiryPolicyFactory(FactoryBuilder.factoryOf(new ModifiedExpiryPolicy(Duration.FIVE_MINUTES)));
//Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.createCache("demoCache", config);
Product product = new Product();
product.setProductID("Product:1001");
product.setProductName("Coffee");
product.setPrice(100);
jCache.put("Product:1001", product);
Aggiungi articoli con scadenza eterna
Note:
JCache Scadenza eterna è simile a quando non è presente alcuna politica di scadenza NCache.
Un elemento aggiunto con EternalExpiryPolicy
non scade. Viene sfrattato in base alla priorità di sfratto assegnatagli. L'esempio seguente dimostra come aggiungere un elemento nella cache con il file EternalExpiryPolicy
.
// Get instance of JCacheManager.
CacheManager manager = Caching.getCachingProvider().getCacheManager();
//We are creating a config for object modified expiration.
//It specifies that Cache Entries won't expire.
//This however doesn't mean they won't be evicted if an underlying implementation needs to free-up resources where by it may choose to evict entries that are not due to expire.
MutableConfiguration<String, Product> config = new MutableConfiguration<>();
config.setExpiryPolicyFactory(FactoryBuilder.factoryOf(new EternalExpiryPolicy()));
//Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.createCache("demoCache", config);
Product product = new Product();
product.setProductID("Product:1001");
product.setProductName("Coffee");
product.setPrice(100);
jCache.put("Product:1001", product);
Aggiungi articoli con scadenza toccata
Note:
JCache Toccato Scadenza si comporta in modo simile a NCache Scadenza scorrevole. Tuttavia, Tocca Scadenza include l'aggiornamento, la modifica e la creazione di una voce.
Il TouchedExpiryPolicy
definisce la scadenza di un elemento in base all'ultimo tocco, ovvero l'ora in cui l'elemento è stato creato, aggiornato o utilizzato per l'ultima volta. L'esempio seguente aggiunge un elemento nella cache con TouchedExpiryPolicy
.
// Get instance of JCacheManager.
CacheManager manager = Caching.getCachingProvider().getCacheManager();
//We are creating a configuration for Touched Expiration.
//It defines the expiry Duration of a Cache Entry based on when it was last touched.
//A touch includes creation, update or access.
MutableConfiguration<String, Product> config = new MutableConfiguration<>();
config.setExpiryPolicyFactory(FactoryBuilder.factoryOf(new TouchedExpiryPolicy(Duration.FIVE_MINUTES)));
//Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.createCache("demoCache", config);
Product product = new Product();
product.setProductID("Product:1001");
product.setProductName("Coffee");
product.setPrice(100);
jCache.put("Product:1001", product);
Vedere anche
Ibernazione della cache
Notifiche di eventi nella cache
NCache Modulo di sessione Java