Una cache non serve senza operazioni CRUD di base. Poiché la cache è un archivio chiave-valore, è necessario aggiungere, richiamare ed rimuovere dati memorizzati nella cache tutto il tempo. Pertanto, queste operazioni CRUD (Crea, Rimuovi, Aggiorna, Elimina) basate su chiavi o operazioni di base semplificano l'accesso e l'utilizzo della cache.
NCache è stato ampiamente adottato per la memorizzazione nella cache di dati distribuiti nelle applicazioni grazie al suo scalabilità lineare ed elevata disponibilità. NCache fornisce varie API CRUD per eseguire operazioni di base sulla memorizzazione nella cache dei dati. Vedremo con quanta facilità puoi utilizzare queste operazioni nella tua applicazione di e-commerce utilizzando NCache per memorizzare i dati utilizzati di frequente.
NCache Dettagli Operazioni di base sulla cache Chiavi e dati della cache
Operazioni CRUD di base
Lo scopo di base di una cache è agire come un archivio dati temporaneo per la tua applicazione, quindi qualunque dato ti serva, esegui il ping della cache invece di fare un viaggio completo nel database. Facciamo un tour delle operazioni CRUD di base che NCache supporta. Ecco un breve elenco di cosa NCache offre:
API | Descrizione | Sintassi |
Aggiungi | Aggiunge nuovi dati alla cache | Aggiungi(chiave, valore) |
inserire | Aggiorna il valore se la chiave esiste già nella cache o aggiunge l'elemento come nuovo in caso contrario | Inserisci(chiave, valore) |
Rimuovere | Rimuove la chiave specificata dalla cache e restituisce il valore | Rimuovi (chiave) |
Ottieni | Recupera il valore della chiave fornita | Ottieni (chiave) |
Ma aspetta, non è solo un semplice negozio di valori-chiave. Oltretutto, NCache ti consente anche di memorizzare nella cache oggetti personalizzati, Oggetti JSON, strutture di dati ed eseguire operazioni su di essi. Quindi, hai uno storage completo e una piattaforma di replica per eseguire operazioni CRUD di base su tutti i tipi di dati con la massima flessibilità utilizzando NCache.
NCache supporta sia operazioni sincrone che asincrone. Operazioni sincrone sono fondamentali per gli aggiornamenti sensibili in cui è necessario assicurarsi che l'operazione eseguita sia avvenuta prima di procedere ulteriormente. In altre parole, tali operazioni sono sequenziali. D'altro canto, Operazioni asincrone sono più flessibili e vengono eseguiti in background mentre il controllo viene inviato immediatamente al client.
È importante notare che, tutti NCache Gli oggetti client SDK e le API sono thread-safe e indipendenti l'uno dall'altro. Ciò garantisce che il riutilizzo delle istanze client sia sempre sicuro, anche tra i thread.
Entriamo un po' nel dettaglio dei diversi tipi di operazioni NCache ti supporta per eseguire i tuoi dati senza problemi. Qui, ti mostrerò come giocare con le operazioni di base sugli oggetti personalizzati.
NCache Dettagli Operazioni di base sulla cache Chiavi e dati della cache
Tipi di operazioni in NCache
NCache consente operazioni CRUD su un singolo articolo o su una massa di articoli. Nel frattempo, le modalità operative supportate sono sincrone e asincrone. NCache supporta sia operazioni sincrone che asincrone. Discutiamo i diversi tipi di operazioni in modo poco approfondito NCache supporta, affinché tu possa eseguire i tuoi dati senza problemi.
Operazioni atomiche
Tutte le operazioni eseguite su una singola coppia chiave-valore sono classificate come operazioni atomiche. Pertanto, tali operazioni richiedono una chiamata alla cache per elemento. Supponendo che tu abbia un'applicazione di e-commerce e desideri aggiungere un nuovo prodotto allo stock memorizzato nella cache, recuperare e aggiornare il suo valore, quindi rimuoverlo dalla cache con NCache API CRUD.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Pre-condition: Cache is already connected // Get product from database var product = GetProductFromDB(1001); string key = $"Product:{product.ProductID}"; // Add item in the cache. Add can be replaced with Insert depending on your requirement. CacheItemVersion version = cache.Add(key, product); // Retrieve cached item from the cache var retrievedItem = cache.Get(key); // Update the price of retrieved product retrievedItem.Price = 500; cache.Insert(key, retrievedItem); // Remove item from the cache cache.Remove(key); |
È importante notare che la stessa chiave non può essere aggiunta di nuovo se esiste già nella cache. Per questo, puoi usare Inserisci che sovrascrive il valore per la chiave esistente.
NCache Dettagli Operazioni di base sulla cache Chiavi e dati della cache
Operazioni di massa
Poiché potrebbe essere necessario eseguire più operazioni contemporaneamente nell'applicazione, NCache consente di eseguire operazioni CRUD su un blocco di dati in una chiamata. Queste operazioni sono progettate per ottenere prestazioni migliori poiché riducono le chiamate di rete al server remoto ottenendo il massimo in una singola chiamata cache.
Ad esempio, se desideri aggiungere, aggiornare o eliminare 100 articoli di prodotto nella cache, puoi farlo tramite una singola chiamata in blocco a aggiungere, update or rimuovere questi elementi invece di chiamare le API pertinenti 100 volte. Vediamo come puoi utilizzare una singola chiamata in blocco per raggiungere questo obiettivo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Pre-condition: Cache is already connected // Get products from database Product[] products = FetchProductsFromDB(); IDictionary<string, CacheItem> dictionary = new Dictionary<string, CacheItem>(); foreach (var prod in products) { string key = $"Product:{prod.ProductID}"; var cacheItem = new CacheItem(prod); dictionary.Add(key, cacheItem); } // Inserting items in the cache IDictionary result = cache.InsertBulk(dictionary); // Retrieve items in bulk IDictionary<string, Product> retrievedItems = cache.GetBulk(keys); // Perform business logic here // Remove a chunk of keys from the cache cache.RemoveBulk(keys); |
NCache Dettagli Operazioni di base sulla cache Chiavi e dati della cache
Operazioni sincrone
Le operazioni sincrone sono importanti per gli aggiornamenti sensibili in cui è necessario assicurarsi che l'operazione eseguita sia stata eseguita prima di procedere ulteriormente. In altre parole, tali operazioni sono sequenziali. Ad esempio, utilizzeresti le operazioni sincrone per aggiornare i prezzi delle tue azioni prima di una grande vendita per assicurarti che i prezzi siano stati aggiornati correttamente.
Queste operazioni funzionano come una chiamata di blocco, in cui il client deve attendere la risposta del server sull'operazione eseguita prima di un'ulteriore elaborazione. Quello che succede è che, fino al momento in cui l'elemento viene aggiunto (o viene generata un'eccezione), l'applicazione attende che l'operazione venga eseguita in modo da recuperare il controllo. Le operazioni CRUD di base sono sincrone per impostazione predefinita, se non diversamente indicato.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Pre-condition: Cache is already connected // Get product from database var product = GetProductFromDB(1001); string key = $"Product:{product.ProductID}"; // Add CacheItem to cache CacheItemVersion version = cache.Add(key, cacheItem); // Retrieve the cached item from the cache CacheItem retrievedItem = cache.GetCacheItem(key); // Update the price of retrieved product product.Price = 500; retrievedItem = new CacheItem(product); cache.Insert(key, retrievedItem); // Remove item from the cache cache.Remove(key); |
Operazioni asincrone
Le operazioni asincrone sono più flessibili e vengono eseguite in background mentre il controllo viene inviato immediatamente al client. Puoi utilizzare questa funzionalità nella tua applicazione di e-commerce al massimo quando è necessario eseguire operazioni meno critiche come l'aggiornamento della descrizione di un prodotto. La modifica delle informazioni di base non deve necessariamente essere monitorata, comunque non ad alta priorità.
NCache supporta più overload asincroni per eseguire operazioni atomiche. Vediamo come puoi usare AddAsync
, InsertAsync
e RemoveAsync
API per aggiungere, aggiornare e rimuovere i dati della tua applicazione in modo asincrono.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Pre-condition: Cache is already connected // Get product from database var product = GetProductFromDB(1001); string key = $"Product:{product.ProductID}"; // Add item in the cache. AddAsync can be replaced with InsertAsync depending on your requirement. Task task = cache.AddAsync(key, product); // Wait before fetching data // Retrieve cached item from the cache var retrievedItem = cache.Get(key); // Update the price of retrieved product retrievedItem.Price = 500; // Add Product object to cache cache.InsertAsync(key, retrievedItem); // Remove item from the cache cache.RemoveAsync(key); |
Conclusione
Poiché ora hai familiarità con le operazioni CRUD di base di NCache, puoi facilmente iniziare a usarli per migliorare le prestazioni delle tue applicazioni distribuite. Quello che stavi facendo con il tuo database ora può essere replicato semplicemente nella tua cache e il risultato è un'esperienza utente migliorata grazie a tempi di risposta significativamente ridotti. Puoi vedere il funzioni avanzate di NCache per un utilizzo estensivo nelle app Web, nei microservizi, nelle librerie e nelle applicazioni console. Quindi, scarica NCache ora con la sua prova gratuita per esplorare di più!