JCache: inicializar cache
Depois de conectar com sucesso NCache em seu aplicativo JCache, uma instância de cache será necessária para executar operações de cache. Aplicativos Java também podem interagir com NCache usando o provedor de API JCache empacotado como parte do NCache. O provedor de API JCache fornece um método conveniente para inicializar a instância de cache.
Pré-requisitos para operações JCache CRUD
- 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>
- Inclua os seguintes pacotes e suas bibliotecas em seu aplicativo do NCache diretório de instalação.
import javax.cache.CacheManager
import javax.cache.Caching;
import javax.cache.spi.CachingProvider;
Certifique-se de que os dados sejam serializados ou registrados no NCache Formato de serialização.
Certifique-se de que o cache esteja em execução.
Inicializar cache
O método a seguir para obter uma instância de cache em Java é usar o getCache
método do JCache CacheManager fornecido por NCache. Você pode obter uma instância de um cache configurado anteriormente usando seu nome (identificador exclusivo) como argumento para o getCache
método.
//Create an instance of JCache's caching provider to get JCacheManager's instance by NCache.
CachingProvider provider = Caching.getCachingProvider();
CacheManager manager = provider.getCacheManager();
//Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.getCache("demoCache");
Obtenção NCache Instância de cache da API
NCacheA API do fornece recursos de cache comparativamente avançados, incluindo Bloqueio, Grupos, Mensagens do Pub/Sub, Tags e tipo SQL recursos de consulta, que podem ser cruciais para cenários complexos, distribuídos e de alta carga. Para acessar todos NCachedos recursos do JCache, você pode utilizar o unwrap
método fornecido por NCache. Este método permite que você obtenha uma instância real de NCache, que pode então ser usado para acessar e utilizar todos os NCachecapacidades de.
Este exemplo cria uma instância do provedor de cache JCache que obtém uma instância do JCache Manager e, em seguida, desembrulha o NCache instância dele e obtém um cache do gerenciador através de seu nome.
//Create an instance of JCache's caching provider to get JCacheManager's instance by NCache.
CachingProvider provider = Caching.getCachingProvider();
CacheManager manager = provider.getCacheManager();
//Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.getCache("demoCache");
// Unwrapping NCache's cache instance from JCache's cache instance.
com.alachisoft.ncache.client.Cache cache = (com.alachisoft.ncache.client.Cache) jCache.unwrap(com.alachisoft.ncache.client.Cache.class);
Inicialize vários caches em um único aplicativo
Para inicializar múltiplos caches em uma única aplicação, é necessário que os caches estejam previamente configurados e em execução.
//Create an instance of JCache's caching provider to get JCacheManager's instance by NCache.
CachingProvider provider = Caching.getCachingProvider();
CacheManager manager = provider.getCacheManager();
//Get a cache from manager via its string name.
javax.cache.Cache demoCache = manager.getCache("demoCache");
javax.cache.Cache productCache = manager.getCache("productCache");
Adicionar/atualizar dados no cache
Após a inicialização bem-sucedida e a obtenção de um identificador de cache, você pode executar um put
Operação. É uma operação básica fornecida pelo JCache e pode ser usada para adicionar/atualizar dados ao cache usando múltiplas chamadas de API.
Adicionando objetos ao cache
No exemplo a seguir, um objeto de uma classe personalizada é criado e adicionado ao cache. Este item possui todas as propriedades fornecidas no código abaixo e é adicionado ao cache usando o comando put
método.
// Ensure that Cache is already initialized and the item exists.
Product product = new Product();
product.setProductID(1001);
product.setProductName("Chai");
String key = "Product:" + product.getProductID();
// Add data in cache with the values
jCache.put(key, product);
Atualizar dados no cache
No exemplo a seguir, um objeto de uma classe personalizada é atualizado no cache. O replace
O método substitui o valor já existente do objeto.
Product product = new Product();
product.setProductID(1001);
product.setProductName("Chai");
product.setUnitsInStock(5); // updated units.
String key = "Product:" + product.getProductID();
// Replace the item in the cache with updated item.
jCache.replace(key, product);
Adicionar e atualizar itens em massa no cache
Você pode adicionar e atualizar uma coleção inteira de itens no cache usando o putAll
método. Este método retorna um HashMap de todas as chaves que não foram adicionadas junto com a exceção.
Product product1 = new Product("1001", "Chai");
String key1 = "Product:" + product1.getProductID();
Product product2 = new Product("1002", "Coffee");
String key2 = "Product:" + product2.getProductID();
// Data to add in cache
HashMap dataMap = new HashMap();
dataMap.put(key1, product1);
dataMap.put(key2, product2);
// Get instance of JCacheManager
CacheManager manager = Caching.getCachingProvider().getCacheManager();
// Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.getCache("demoCache");
// Add/Update all keys in the cache
jCache.putAll(dataMap);
Recuperar do Cache
JCache usa get
método para recuperar uma entrada específica do cache por meio da chave.
Recuperar um único item do cache
No exemplo a seguir, usamos o padrão get
método para recuperar um objeto pré-existente, "Produto: 1001". Este item já existe no cache. O get
O método retorna um objeto que precisa ser convertido de acordo. Se uma chave correspondente não existir no cache, um null
valor é retornado.
// Get instance of JCacheManager.
CacheManager manager = Caching.getCachingProvider().getCacheManager();
// Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.getCache("demoCache");
// Key to get
String key = "Product:1001";
//Get specified item
Product product = (Product) jCache.get(key);
if (product != null) {
// business logic
}
Recuperar dados em massa do cache
Para buscar uma coleção do cache, use o getAll
método. Este método retorna uma coleção de itens como um HashMap.
// Get instance of JCacheManager.
CacheManager manager = Caching.getCachingProvider().getCacheManager();
// Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.getCache("demoCache");
HashSet keysToGet = new HashSet();
keysToGet.add("Product:1001");
keysToGet.add("Product:1002");
Map productsMap = jCache.getAll(keysToGet);
if (!productsMap.isEmpty())
{
for (Iterator iter = productsMap.values().iterator(); iter.hasNext();)
{
Product product = (Product) iter.next();
//utilize product object accordingly.
}
}
Remover dados do cache
JCache fornece remove
método para remover o mapeamento de uma chave existente do cache.
Usando o método de remoção
O método remove na API JCache remove o mapeamento associado a uma chave especificada do cache, se existir. O método retorna verdadeiro (se o cache contiver a chave e a remoção tiver sido bem-sucedida) ou falso (se não houver mapeamento para a chave). O exemplo a seguir remove os mapeamentos de chave para Produto classe.
// Get instance of JCacheManager.
CacheManager manager = Caching.getCachingProvider().getCacheManager();
// Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.getCache("demoCache");
// Key to remove.
String key = "Product:1001";
// False is returned if key does not exist in cache.
boolean result = jCache.remove(key);
if (result != true) {
//Deleted.
}
else {
//Failed.
}
Remover dados em massa
O trecho de código a seguir remove os itens em massa do cache por meio do removeAll
método. O código obtém uma instância do JCache Manager, obtém o cache necessário do gerenciador e define chaves das quais os dados devem ser removidos.
// Get instance of JCacheManager
CacheManager manager = Caching.getCachingProvider().getCacheManager();
// Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.getCache("demoCache");
// Keys to remove
HashSet set = new HashSet();
set.add("Product:1001");
set.add("Product:1002");
// Removing all keys
jCache.removeAll(set);
Limpar Cache
Para limpar o cache completamente (em segundo plano), você precisa chamar o clear
método.
// Get instance of JCacheManager.
CacheManager manager = Caching.getCachingProvider().getCacheManager();
// Get a cache from manager via its string name.
javax.cache.Cache jCache = manager.getCache("demoCache");
// Clear the Cache.
jCache.clear();
Veja também
Notificações de eventos no cache
Cache de hibernação
NCache Módulo de sessão Java