Provider JCache per NCache

NCache Agisce come un provider JCache distribuito, consentendo alle applicazioni Java di utilizzare la memorizzazione nella cache conforme a JSR 107 per eliminare i colli di bottiglia del database e scalare orizzontalmente. JCache è un'API basata su Java utilizzata per la memorizzazione nella cache in memoria degli oggetti Java. Ciò include anche la creazione di oggetti, l'invalidazione, lo spooling, l'accesso condiviso e la coerenza tra le Java Virtual Machine (JVM).

NCache è una soluzione di memorizzazione nella cache distribuita molto potente e versatile che viene fornita con un vasto set di funzionalità e strumenti. NCache Fornisce un'implementazione ad alte prestazioni della specifica JSR 107, garantendo la piena compatibilità con le applicazioni Java che richiedono caching distribuito con latenza inferiore al millisecondo. Sfruttando questa implementazione, è possibile integrare NCachele funzionalità di livello aziendale nel tuo ambiente conforme a JCache senza problemi architettonici.

Come si inizializza un'istanza JCache in NCache?

La creazione di un'istanza JCache è necessaria per poter eseguire qualsiasi operazione sulla cache. In Java, il metodo getCache() è considerato uno dei metodi più convenienti per ottenere l'istanza JCache. L'esempio di codice seguente mostra come inizializzare una cache usando questo metodo.

/*Create an instance of JCache's caching provider to get JCacheManager's instance */
CachingProvider provider = Caching.getCachingProvider();
CacheManager manager = provider.getCacheManager();

/*Get a cache from manager via its string name.*/
javax.cache.Cache jCache = manager.getCache("myreplicatedcache");

Quali sono le operazioni di base JCache supportate da NCache?

Una volta che la cache è stata inizializzata correttamente e hai acquisito un handle di cache, puoi eseguire molte operazioni sulla cache come l'aggiunta di, recupero, aggiornamentoe eliminazione dati dalla cache.

Nell'esempio di codice seguente viene illustrato come utilizzare l'istanza della cache (creata nell'esempio di codice precedente) per eseguire operazioni di base sulla cache.

/*Adding data to the cache*/
Product product = fetchProductFromDB();
String key = "Product:" + product.getProductID();       
jCache.put(key, product);

/*Update data in the cache*/
product.setUnitsInStock(newValue); // updated units
jCache.replace(key, product);
	
/*Get data from the cache*/
Object item = jCache.get(key);
	
/*Remove data from the cache*/
Boolean result = jCache.remove(key);

In che modo JCache gestisce la scadenza dei dati in NCache?

Un'altra caratteristica di JCache è Scadenza dei dati dove i dati della cache sono scaduti in base al tempo. JCache supporta due tipi principali di scadenze, vale a dire Scadenza assoluta and Scadenza scorrevole. In Scadenza assoluta, i dati all'interno della cache sono scaduti dopo un intervallo di tempo fisso. In Scadenza scorrevole, i dati all'interno della cache scadono dopo un intervallo di tempo, ma questo intervallo di tempo viene reimpostato ogni volta che si accede a questi dati.

Gli elementi possono essere aggiunti e aggiornati nella cache con le scadenze Assolute e Scorrevoli definite. Nell'esempio di codice seguente i dati vengono aggiunti alla cache con la scadenza assoluta definita.

CachingProvider cachingProvider = Caching.getCachingProvider();
CacheManager manager = cachingProvider.getCacheManager();
    Customer customer = new Customer();
    customer.setAge(22);
    String key = "Customer:" + customer.getCustomerID();

    //configure the expiration duration
    CompleteConfiguration<Object, Object> cacheConfig = new MutableConfiguration().setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.ONE_MINUTE));

    //create cache with customized configuration settings
    javax.cache.Cache jCache = manager.createCache("mypartitionedcache", cacheConfig);

    //add item to cache which will expire after 1 minute
    jCache.put(key, customer);

Monitoraggio degli eventi della cache con gli ascoltatori JCache

Notifiche a livello di cache sono eventi generali che vengono attivati ​​quando si verificano determinati eventi registrati. Per ricevere le notifiche degli eventi da JCache, è necessario implementare le interfacce relative agli eventi pertinenti.

Nell'esempio seguente, si presuppone che tu abbia implementato la fabbrica del filtro degli eventi.

// class that implements the event-listener factory
public class MyCacheEntryListener<K, V>
   implements CacheEntryCreatedListener<K, V>, Serializable
   {...
           for (CacheEntryEvent<? extends K,? extends V> event: events)
            {
            System.out.println("Received a " + event);
            }
      ...
    }
    ...
//configuring
MyCacheEntryListener<String,String> m_listener = new MyCacheEntryListener<String,String>();

MutableConfiguration<String, String> config = new MutableConfiguration<String, String>();

config.setTypes(String.class, String.class).addCacheEntryListenerConfiguration(
                    new MutableCacheEntryListenerConfiguration<String, String>
                            (FactoryBuilder.factoryOf(m_listener),FactoryBuilder.factoryOf(
                                    new MyCacheEntryEventFilter<String, String>()),true,true));

Cache<String, String> jCache = cacheManager.createCache("myreplicatedcache", config);

utilizzando NCache API

L'API fornita da NCache offre caratteristiche e funzioni più robuste rispetto all'API fornita da JCache. Alcune delle caratteristiche che NCache fornisce ma JCache non è il seguente:

Alcune delle caratteristiche che NCache fornisce ma JCache non è il seguente:

Caratteristica JCache standard (JSR 107) NCache Fornitore JCache
Cerca Solo basato su chiave Query SQL e LINQ
Tag dati Non supportato Supportato tramite unwrap
Persistenza Basic Lettura/scrittura
scalata Limitato da JVM Cluster scalabile linearmente

Per utilizzare tutte queste funzionalità fornite dal NCache API devi avere un'istanza della sua cache.

L'esempio di codice seguente mostra come utilizzare un'API JCache per ottenere un'istanza cache di NCache utilizzando il metodo unwrap. Questa istanza viene quindi utilizzata per aggiungere dati nella cache con tag (caratteristica di NCache) abilitato. Questi tag possono essere utilizzati al posto delle chiavi per recuperare i dati dalla cache in un secondo momento.

... 
com.alachisoft.ncache.client.Cache cache = null;
cache = (com.alachisoft.ncache.client.Cache) jCache.unwrap(com.alachisoft.ncache.client.Cache.class);
Customer customer = fetchCustomer();
String customerKey = “Customer” + customer.getCustomerID();

// Specify Tags
List<Tag> tags = List.of(new Tag("East Coast Customers"));
CacheItem cacheItem = new CacheItem(customer);
cacheItem.setTags(tags);
cache.add(customerKey, cacheItem);

Cosa fare dopo?

Domande frequenti (FAQ)

Migliori NCache JCache Provider è un'implementazione conforme al 100% della specifica JSR 107 (JCache). Consente agli sviluppatori Java di utilizzare un'API di caching standardizzata, beneficiando al contempo di NCachearchitettura distribuita, che garantisce elevata disponibilità e scalabilità lineare per le applicazioni Java.

La migrazione è semplice perché NCache aderisce rigorosamente allo standard JSR 107. È sufficiente includere NCache File jar JCache nel tuo progetto e configura il Fornitore di cache per indicare il tuo NCache cluster. Non sono richieste modifiche al codice proprietario per le operazioni di caching di base.

Sì. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. NCache implementa completamente le interfacce JSR 107 ExpiryPolicy (inclusa la scadenza assoluta e scorrevole) e CacheEntryListener. Ciò garantisce che la logica di espulsione della cache e i flussi di lavoro basati sugli eventi rimangano coerenti quando si passa da una cache locale a una NCache cluster distribuito.

Sì. Utilizzando il javax.cache.Cache.unwrap metodo, è possibile accedere al sottostante NCache API. Ciò consente funzionalità avanzate non presenti nella specifica standard JSR 107, come query di tipo SQL, tag degli elementi e sincronizzazione del database.

Assolutamente. NCache Fornisce provider dedicati per Spring Cache e Hibernate Second Level Cache (L2) che sfruttano lo standard JCache. Ciò consente un'integrazione perfetta nei framework Java aziendali per ridurre il carico del database e migliorare i tempi di risposta.

© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.