title: CRUD Operations In Data Cache: An Overview description: Manage data cache with CRUD operations: sync for control, async for responsiveness, and bulk for performance.
canonico: https://www.alachisoft.com/resources/docs/ncache/prog-guide/basic-cache-operations.html
CRUD Operations In Data Cache: An Overview
NCache memorizza i dati come coppie chiave-valore, ovvero gli identificatori univoci (chiave) vengono archiviati rispetto a un dato (valore). Simile a un database di valori-chiave, NCache inoltre archivia, recupera e gestisce i dati tramite operazioni CRUD. A questo proposito, NCache fornisce un set diversificato di API CRUD per la memorizzazione nella cache di dati atomici o di massa, sia in modo sincrono che asincrono. Qui, forniamo una panoramica di NCacheoperazioni CRUD di base supportate: Aggiungi, inserire, Ottienie Rimuovere.
Before moving forward, you must know what to store in the data cache. Besides the conventional string-based values, NCache permette di aggiungere tipi di dati primitivi, oggetti personalizzati, dati con metadati (CacheItem), strutture di datie Dati JSON.
Any object added to the data cache must be serializable. NCache gestisce la serializzazione binaria e JSON in base al formato del tuo negozio. Se non puoi eseguire la serializzazione binaria nativa, NCache fornisce anche il proprio Framework di serializzazione compatto. Per il negozio JSON, NCache gestisce la serializzazione per gli oggetti forniti. In alternativa, puoi aggiungere NCache fornito oggetti serializzati JSON, che consente il supporto per applicazioni multipiattaforma e multilingue.
Operation Types in Data Cache
NCache consente operazioni CRUD su articoli singoli o in blocco. Nel frattempo, le modalità operative supportate sono sincrone e asincrone. Qui spieghiamo brevemente i tipi e le modalità di funzionamento in NCache.
Operazioni atomiche
Note:
Questa funzionalità è disponibile anche in NCache Professional.
Classifichiamo tutte le operazioni eseguite su una singola coppia chiave-valore come operazioni atomiche. Pertanto, tali operazioni richiedono una singola chiamata alla cache. Il comportamento dell'atomo aggiungere, inserire, rimuoveree ottenere le operazioni saranno discusse nelle sezioni successive.
Operazioni di massa
Note:
Questa funzionalità è disponibile anche in NCache Professional.
Le operazioni in blocco consentono di eseguire qualsiasi operazione CRUD su più elementi tramite una singola chiamata alla cache. Sebbene un'operazione in blocco venga eseguita come operazione singola, l'errore delle operazioni viene trattato singolarmente. Sono specificamente progettati per migliorare le prestazioni. Ad esempio, il recupero di 100 elementi della cache in una singola operazione di massa è molto più rapido rispetto al recupero tramite 100 chiamate atomiche. In questo modo, le prestazioni migliorano grazie alla riduzione dei viaggi di rete verso il server remoto.
Le operazioni in blocco sono particolarmente utili per recuperare i dati memorizzati nella cache in blocco all'avvio di un'applicazione o per inserire il risultato di una query come blocco nella cache.
Operazioni sincrone
Note:
Questa funzionalità è disponibile anche in NCache Professional.
NCache consente di aggiungere un elemento atomico o una massa di elementi in modo sincrono. Poiché le operazioni sincrone si verificano come una chiamata di blocco, il client deve attendere la risposta dal server per eseguire ulteriori operazioni. Il controllo ritorna all'applicazione una volta eseguita l'operazione.
Sebbene il client debba attendere il completamento dell'operazione, le operazioni di sincronizzazione consentono di restituire lo stato di esito positivo o negativo dell'operazione quando il controllo viene restituito all'utente. Tale operazione potrebbe non riuscire a causa di un errore di connessione con la cache o di errori interni del sistema. Questo processo fornisce alle applicazioni il controllo per gestire eventuali scenari di errore non appena vengono rilevati. Pertanto, queste operazioni sono essenziali quando si elaborano dati critici.
Furthermore, synchronous operations are sequential. This is useful if your operations are dependent on each other. For example, an e-commerce site synchronously adds items that are on flash sale for 2 hours only and later on retrieves those items that have a flash sale. While fetching the cached items on sale, failure can be avoided if it ensures that these items were successfully added to the data cache first. The basic CRUD operations are synchronous by default if not stated otherwise.
Operazioni asincrone
Asynchronous operations occur in the background, so the client does not have to wait for the response from the server to execute further operations. The list of actions to be performed on the data cache is maintained in a queue on the client side, and a dedicated background thread keeps on sending them to the server side. The control returns to the application immediately after an operation is queued. This increases the overall responsiveness of the application.
Le operazioni asincrone possono essere utili quando il tempo di risposta è fondamentale per l'applicazione e l'errore delle operazioni non ostacola il funzionamento dell'applicazione.
Poiché le operazioni asincrone non notificano l'esito negativo o il successo delle operazioni stesse, le chiamate asincrone NCache restituire un oggetto del Classe di attività che può essere ulteriormente utilizzato per ottenere lo stato dell'operazione. A questo proposito, la classe Task fornisce i seguenti flag di stato per indicare l'esito positivo o negativo dell'operazione eseguita.
- È completato: Notifica se l'operazione specificata si verifica correttamente nella cache.
- è in errore: Notifica se l'operazione specificata si verifica ma non riesce.
- è cancellato: Avvisa se l'operazione specificata viene annullata per qualsiasi motivo interno.
Basic CRUD in Data Cache
Puoi interagire con la cache una volta ottenere un'istanza di una cache. Vediamo il funzionamento e il comportamento delle operazioni CRUD di base supportate da NCache.
Aggiungi/Inserisci
Gli elementi possono essere aggiunti alla cache utilizzando Aggiungi or inserire metodo. Tuttavia, entrambe le operazioni differiscono nel comportamento. Add
aggiunge correttamente un elemento alla cache con una chiave specifica solo quando la chiave fornita non esiste nella cache e genera un'eccezione in caso contrario. Supponiamo che tu voglia proibire l'aggiunta di un elemento alla cache da parte di più client contemporaneamente. Quindi puoi usare il Add
metodo per notificare l'errore dell'operazione se un client tenta di aggiungere un elemento già esistente nella cache.
D'altro canto, Insert
funziona anche come operazione di aggiornamento. Se aggiungi un elemento utilizzando il file Insert
metodo e la chiave specificata esiste già nella cache, l'elemento esistente nella cache viene sostituito. Oltre ad aggiungere elementi, aggiorna in modo sicuro gli elementi nella cache.
Il caso più semplice consiste nell'aggiungere o inserire direttamente un elemento nella cache specificando una chiave e un valore. Tuttavia, questi metodi hanno diversi sovraccarichi che consentono di aggiungere/inserire elementi nella cache con opzioni avanzate. I casi d'uso e i comportamenti pertinenti di Aggiungi/Inserisci sono discussi di seguito.
- Aggiungi massa di dati: Una raccolta di dati può essere aggiunta alla cache contemporaneamente utilizzando il file
AddBulk
/InsertBulk
metodo.AddBulk
può essere utilizzato se richiedi specificamente notifiche di mancata aggiunta di elementi con chiavi esistenti. A questo proposito, le operazioni fallite vengono evidenziate singolarmente restituendo un dizionario che specifica le chiavi corrispondenti ad eccezione dell'applicazione. Ad esempio, se una massa di 100 elementi viene aggiunta alla cache e 20 di questi elementi sono già presenti nella cache, i restanti 80 elementi verranno aggiunti alla cache. I 20 elementi esistenti verranno restituiti all'applicazione come dizionario delle operazioni non riuscite.
Nel caso in cui si desideri evitare errori durante l'aggiunta di più elementi per aggiornare gli elementi esistenti, è possibile utilizzare il file InsertBulk
metodo. Sovrascrive gli elementi esistenti nella cache e restituisce un dizionario di chiavi che non è stato possibile aggiungere/aggiornare per qualsiasi motivo.
Aggiungi i dati in modo asincrono: Gli elementi possono essere aggiunti/inseriti nella cache in modo asincrono quando si desidera migliorare l'efficienza dell'applicazione client.
AddAsync
/InsertAsync
i metodi aggiungono gli elementi in background e restituiscono l'oggetto Task una volta completata l'operazione. Il cliente può controllare i flag di stato menzionati in Operazioni asincrone per verificare il successo o il fallimento dell'operazione di aggiunta/inserimento senza alcun codice aggiuntivo.Aggiungi dati con dipendenze: Puoi aggiungere/inserire elementi nella cache con dipendenze. Poiché i dati della cache sono temporanei, potrebbe essere necessario rimuovere alcuni dati dalla cache in base a criteri specifici dell'utente. In quel caso, NCache fornisce vari modi per invalidare i dati memorizzati nella cache consentendo di impostare le dipendenze durante l'aggiunta/l'inserimento di elementi. In particolare, puoi impostare le dipendenze in base a tempo, dati della cache, banca datie una fonte esterna per invalidare ed eventualmente rimuovere determinati elementi in base ai requisiti dell'applicazione.
Scrittura simultanea: Puoi inserire elementi nella cache con bloccaggio per controllare l'accesso simultaneo in caso di applicazioni multithread o multiclient. Aiuta a mantenere l'integrità dei dati quando nella cache vengono eseguite operazioni di aggiornamento simultanee. Puoi bloccare un elemento esclusivamente o lavorare su una versione dell'elemento aggiunto alla cache. La versione dell'elemento viene gestita dalla cache per ogni elemento nella cache e viene incrementata automaticamente ogni volta che viene eseguita l'operazione di aggiornamento.
Scrivi nell'origine dati: In casi avanzati, se l'origine dati è configurata, i dati verranno aggiunti/aggiornati nella cache e nell'origine dati durante l'operazione di aggiunta/inserimento.
Flusso di esecuzione della richiesta: Quando si verifica un'operazione di aggiunta/inserimento, il processo di esecuzione della richiesta sottostante segue questi passaggi: serializzazione, crittografia e compressione. Innanzitutto, i dati forniti vengono serializzati. Quindi viene crittografato sul lato client se la crittografia è configurata. Poiché i dati che viaggiano attraverso la rete possono essere facilmente intercettati, puoi crittografare i tuoi dati sensibili utilizzando NCache Funzione di crittografia dei dati per proteggerlo dai rischi per la sicurezza. Infine, i dati crittografati vengono compressi se la compressione è abilitata. Poiché la larghezza di banda e la memoria disponibili sono scarse, NCache Funzione di compressione dei dati consente di ridurre notevolmente il traffico di rete e il consumo di memoria. Alla fine, le tue operazioni di scrittura vengono eseguite più velocemente.
Ottieni
In primo luogo, una cache è considerata efficace in base alla sua capacità di recuperare i dati. Un elemento può essere recuperato dalla cache utilizzando il file Get
operazione specificando la chiave in base alla quale è stato archiviato l'elemento. Nel caso in cui l'elemento specificato non esista nella cache, viene restituito un valore nullo senza eccezioni.
Ottieni grandi quantità di articoli: È possibile recuperare più elementi dalla cache contemporaneamente utilizzando il file
GetBulk
metodo. Recupera gli elementi trovati nella cache sotto forma di un dizionario di valori-chiave. Non viene generata alcuna eccezione se una delle chiavi specificate non esiste nella cache.Verificare l'esistenza degli elementi: poiché la cache è volatile, potrebbe essere necessario sapere se un elemento esiste o meno nella cache. L'esistenza di un elemento può essere determinata utilizzando il file NCache purché
Contains
metodo. Inoltre, l'esistenza di più elementi può essere verificata attraverso ilContainsBulk
metodo.Ottieni dall'origine dati: Nei casi avanzati, se l'origine dati è configurata, i dati verranno recuperati dall'origine dati se non esiste nella cache. Per maggiori dettagli si può fare riferimento al capitolo Fornitori di origini dati.
Rimuovere
Per gestire in modo efficiente i dati obsoleti e l'archiviazione nella cache, potrebbe essere necessario rimuovere i dati in modo esplicito. Puoi rimuovere facilmente gli elementi dalla cache utilizzando il file Remove
metodo. Se la chiave specificata non esiste nella cache, viene restituito un valore null. È inoltre possibile ottenere l'elemento rimosso per un'ulteriore elaborazione in base alle esigenze dell'applicazione. Tuttavia, il costo per recuperare gli oggetti al momento della rimozione è inevitabile. Pertanto, si consiglia l'approccio precedente quando non sono necessari gli elementi in fase di rimozione.
Rimuovi articoli in blocco: Una raccolta di elementi può essere rimossa dalla cache contemporaneamente utilizzando il file
RemoveBulk
metodo. Puoi anche recuperare gli elementi rimossi con successo in un dizionario. Tuttavia, può essere lento a seconda delle dimensioni degli oggetti recuperati durante la rimozione. Pertanto, si consiglia di rimuovere semplicemente gli elementi poiché è più efficiente quando non è necessario elaborare gli elementi rimossi.Rimuovere gli elementi in modo asincrono: È possibile rimuovere i dati atomici dalla cache in modo asincrono utilizzando il file
RemoveAsync
metodo. L'elemento verrà rimosso in background e, al completamento dell'operazione, riceverai lo stato. Nel caso in cui desideri verificare se l'elemento è stato rimosso correttamente o meno, puoi utilizzare il file fornito flag di stato per operazioni asincrone.Rimuovi dall'origine dati: In casi avanzati, se l'origine dati è configurata, la rimozione dei dati avverrà sia nella cache che nell'origine dati. Per maggiori dettagli, puoi fare riferimento al capitolo Fornitori di origini dati.
Note:
a differenza di Remove
ed RemoveBulk
, RemoveAsync
non restituisce gli oggetti rimossi all'applicazione.
In questa sezione
Aggiungi dati alla cache
Spiega come aggiungere dati nella cache.
Aggiorna i dati esistenti nella cache
Spiega come aggiornare i dati esistenti nella cache.
Rimuovere i dati dalla cache
Spiega come rimuovere i dati dalla cache.
Recupera i dati della cache esistenti
Spiega come recuperare i dati dalla cache.