Datenablauf im JCache
Auf dieser Seite wird erläutert, wie Sie die Ablaufrichtlinien von JCache verwenden können NCache. Auf der Seite werden die Voraussetzungen aufgeführt, die für die Verwendung von JCache erforderlich sind NCache, zusammen mit Codeausschnitten, die die verschiedenen Ablaufrichtlinien von JCache demonstrieren.
Voraussetzungen für den Datenablauf in JCache
- Zur Verwendung von JCache mit NCache Professional, ersetze das
ncache-client
mitncache-professional-client
in Ihrer pom.xml.
<dependency>
<groupId>com.alachisoft.ncache</groupId>
<artifactId>ncache-client</artifactId>
<version>x.x.x</version>
</dependency>
Importieren Sie die folgenden Pakete in Ihre Anwendung:
import javax.cache.CacheManager;
import javax.cache.Caching;
import javax.cache.spi.CachingProvider;
Stellen Sie sicher, dass die Daten serialisiert oder registriert sind NCache Serialisierungsformat.
- Stellen Sie sicher, dass der Cache initialisiert ist und ausgeführt wird.
Fügen Sie Elemente mit Ablaufdatum hinzu
Note
JCache Ablaufdatum des Zugriffs verhält sich ähnlich wie die NCache Gleitender Ablauf. Jedoch Ablaufdatum des Zugriffs beinhaltet keine Cache-Updates.
Die Ablaufzeit eines Cache-Elements im AccessedExpiryPolicy
basiert auf dem Zeitpunkt des letzten Zugriffs. Im folgenden Beispiel wird eine Instanz des Caching-Anbieters von JCache erstellt, um die Instanz von JCacheManager durchzuleiten NCacheAnschließend wird eine Konfigurationsdatei erstellt, die die Ablaufzeit eines Cache-Elements angibt.
// 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);
Fügen Sie Elemente mit erstelltem Ablaufdatum hinzu
Note
JCache Ablaufdatum erstellt verhält sich ähnlich wie die NCache Absoluter Ablauf.
Die Ablaufzeit eines Cache-Elements im CreatedExpiryPolicy
richtet sich nach der Entstehungszeit. Daher wird die Ablaufzeit bei jeder Aktualisierung des Cache-Elements nicht zurückgesetzt. Im folgenden Beispiel wird ein Cache-Element mit hinzugefügt 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);
Fügen Sie Artikel mit geändertem Ablaufdatum hinzu
Note
JCache Geänderter Ablauf verhält sich ähnlich wie die NCache Gleitender Ablauf. Der geänderte Ablauf umfasst jedoch das Aktualisieren, Ändern und Erstellen eines Eintrags.
Das ModifiedExpiryPolicy
definiert die Ablaufzeit des Cache-Eintrags auf Basis seiner letzten Aktualisierung. Das Update kann jede Änderung im Eintrag sein. Im folgenden Beispiel wird ein Element mit hinzugefügt ModifiedExpiryPolicy
im 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);
Fügen Sie Artikel mit ewigem Ablaufdatum hinzu
Note
JCache Ewiger Ablauf ähnelt dem Fall, wenn es keine Ablaufrichtlinie gibt NCache.
Ein Artikel hinzugefügt mit EternalExpiryPolicy
läuft nicht ab. Die Räumung erfolgt auf Grundlage der ihr zugewiesenen Räumungspriorität. Das folgende Beispiel zeigt, wie man mit dem ein Element zum Cache hinzufügt 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);
Fügen Sie Artikel mit berührtem Ablaufdatum hinzu
Note
JCache Berührter Ablauf verhält sich ähnlich wie die NCache Gleitender Ablauf. Jedoch Tippen Sie auf Ablauf umfasst das Aktualisieren, Ändern und Erstellen eines Eintrags.
Das TouchedExpiryPolicy
Definiert den Ablauf eines Elements auf der Grundlage der letzten Berührung, d. h. der Zeit, zu der das Element zuletzt erstellt, aktualisiert oder aufgerufen wurde. Das folgende Beispiel fügt dem Cache ein Element hinzu 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);
Siehe auch
Hibernate-Caching
Ereignisbenachrichtigungen im Cache
NCache Java-Sitzungsmodul