Expiração de dados no JCache
Esta página explica como você pode usar as políticas de expiração do JCache com NCache. A página detalha os pré-requisitos necessários para usar JCache com NCache, junto com trechos de código que demonstram as diferentes políticas de expiração oferecidas pelo JCache.
Pré-requisitos para expiração de dados no JCache
- Para usar JCache com NCache Professional, substitua o
ncache-client
dencache-professional-client
em seu pom.xml.
<dependency>
<groupId>com.alachisoft.ncache</groupId>
<artifactId>ncache-client</artifactId>
<version>x.x.x</version>
</dependency>
Importe os seguintes pacotes em seu aplicativo:
import javax.cache.CacheManager;
import javax.cache.Caching;
import javax.cache.spi.CachingProvider;
Certifique-se de que os dados sejam serializados ou registrados com NCache Formato de serialização.
- Certifique-se de que o cache esteja inicializado e em execução.
Adicionar itens com expiração acessada
Note
JCache Expiração acessada se comporta de forma semelhante ao NCache'S Expiração deslizante. Porém, Expiração acessada não inclui atualizações de cache.
O tempo de expiração de um item de cache no AccessedExpiryPolicy
é baseado em seu último horário de acesso. O exemplo a seguir cria uma instância do provedor de cache do JCache para obter a instância do JCacheManager por meio NCache, ele cria um arquivo de configuração especificando o tempo de expiração de um item de 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);
Adicionar itens com expiração criada
Note
JCache Expiração criada se comporta de forma semelhante ao NCache'S Expiração Absoluta.
O tempo de expiração de um item de cache no CreatedExpiryPolicy
é baseado em seu tempo de criação. Portanto, qualquer atualização no item de cache não redefine o tempo de expiração. O exemplo a seguir adiciona um item de cache com o 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);
Adicionar itens com expiração modificada
Note
JCache Expiração Modificada se comporta de forma semelhante ao NCache Expiração deslizante. No entanto, a Expiração Modificada inclui atualização, modificação e criação de uma entrada.
A ModifiedExpiryPolicy
define o tempo de expiração da entrada de cache com base em sua última atualização. A atualização pode ser qualquer alteração na entrada. O exemplo a seguir adiciona um item com ModifiedExpiryPolicy
na 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);
Adicionar itens com validade eterna
Note
JCache Expiração Eterna é semelhante a quando não há política de expiração em NCache.
Um item adicionado com EternalExpiryPolicy
não expira. Ele é despejado com base na prioridade de despejo que lhe foi atribuída. O exemplo a seguir demonstra como adicionar um item no cache com o 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);
Adicionar itens com expiração tocada
Note
JCache Expiração Tocada se comporta de forma semelhante ao NCache Expiração deslizante. Porém, Toque em Expiração inclui atualizar, modificar e criar uma entrada.
A TouchedExpiryPolicy
define a expiração de um item com base no último toque, ou seja, a hora em que o item foi criado, atualizado ou acessado pela última vez. O exemplo a seguir adiciona um item no cache com 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);
Veja também
Cache de hibernação
Notificações de eventos no cache
NCache Módulo de sessão Java