Comportamento e utilizzo delle strutture dati nella cache
NCache supporta le strutture delle coppie chiave-valore in cui la chiave è un tipo stringa rispetto a un valore che può essere qualsiasi tipo primitivo, oggetto personalizzato, CacheItemo una struttura dati. ATTIVITA' E GRUPPI, tag, Scadenza, Blocco, dipendenzee altro può essere assegnato a questi valori.
Note:
Questa funzione è disponibile solo in NCache Enterprise.
Tuttavia, l'aggiornamento di qualsiasi valore all'interno di una struttura di dati, ad esempio un elenco, richiedeva di recuperarlo dalla cache, aggiornarlo e quindi aggiungerlo nuovamente alla cache. Ciò ha comportato ulteriori chiamate sulla rete. NCache ha ora eliminato questa restrizione fornendo supporto esclusivo per l'aggiunta/l'aggiornamento di strutture di dati manipolando i dati direttamente sul server. Quindi, migliorando le prestazioni complessive.
NCache fornisce un supporto esplicito per le seguenti strutture di dati:
- Lista
- Fare la coda
- Set di hash
- Dizionario
- contatore
Oltre alle funzioni fornite dalle interfacce native della struttura dei dati, NCache estende le sue funzionalità fornendo la possibilità di specificare i metadati utilizzando a CacheItem
. Ciò significa che le strutture dati possono avere Tag, Scadenza e Dipendenza, proprio come gli altri oggetti della cache.
Consigli
L'intera struttura dei dati risiederà in un nodo di una cache in cluster. Ad esempio, se crei un dizionario di 100 elementi, l'intero dizionario di 100 elementi esisterà in un nodo e non sarà distribuito tra gli altri nodi.
La figura seguente mostra le varie strutture dati rispetto alle rispettive chiavi di cache che risiedono in una cache cluster di 3 nodi:
Caratteristica comportamento saggio
Archiviazione
Qualsiasi elemento archiviato all'interno di una struttura dati è serializzato in JSON per supportare operazioni native sul server, ad esempio
Contains
.Le strutture dati hanno le proprie dimensioni insieme ai metadati che influiscono sulla dimensione della cache.
Annotazione campo primario
[Campo primario] l'annotazione può essere utilizzata nelle classi del modello utente per le strutture dati tra cui List e Queue. Le operazioni di ricerca sulle strutture dati, come Contains
, può essere utilizzato per serializzare e inviare solo quell'attributo/proprietà invece di serializzare e trasferire l'intero oggetto sul server. Solo il PrimaryField
L'attributo verrà inviato al server e confrontato lato server, diminuendo il costo dell'operazione.
Ad esempio, al cotone biologico viene applicata l'etichetta Customer
classe contiene la proprietà CustomerId
, che è unico. Questo può essere contrassegnato come PrimaryField
, e invece di confrontare l'oggetto completo, diciamo Contains
, confrontando solo il PrimaryField
può completare l'operazione.
class Customer
{
[PrimaryField]
public string CustomerId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
Chiavi della cache
Le strutture dati in NCache sono nominati, ovvero verranno archiviati rispetto a una chiave di cache come gli altri oggetti in NCache. Se esiste una chiave cache per a CacheItem
, non può essere utilizzato contro una struttura di dati.
Funzionalità ricercabili
Gli attributi ricercabili come Gruppi, Tag e Tag denominati possono essere specificati rispetto a una struttura di dati durante la sua creazione. UN CacheItem
e una struttura dati può appartenere allo stesso gruppo/tag/tag con nome. Per maggiori dettagli, fare riferimento a Configura attributi ricercabili.
Funzionalità di invalidamento dei dati
espulsione
L'intera struttura dati viene eliminata dalla cache se rientra nella categoria "da eliminare". Non solo la creazione della struttura dati porta alla possibile eliminazione, ma anche qualsiasi operazione di scrittura sulla struttura dati può innescare lo sfratto. Ad esempio, un elemento viene aggiunto all'elenco in modo tale da soddisfare i criteri di sfratto.
Scadenza
Le strutture dati possono essere invalidate dalla cache dopo un intervallo di tempo specificato, proprio come a CacheItem
. Le strutture dati supportano entrambi, Scadenza assoluta ed Scadenza scorrevole.
Dipendenze della cache
Le strutture dati supportano tutte le dipendenze della cache. Per le dipendenze basate su chiave, un elenco può dipendere da a CacheItem
e viceversa. Per maggiori dettagli, fare riferimento a Configura attributi di invalidamento.
Interrogazione su strutture dati
Le strutture di dati possono essere interrogate nella cache se ne hanno attributi ricercabili configurato. Gli attributi ricercabili includono:
- ATTIVITA' E GRUPPI
- tag
- Tag con nome
Per maggiori dettagli, consultare Interrogazione su strutture dati.
Fornitori di fonti di supporto
Leggi tutto
Questo è solo a livello di raccolta. Le strutture dati possono essere lette direttamente da un'origine dati se non si trovano nella cache. I singoli elementi di una struttura dati non verranno letti dall'origine dati. Pertanto, l'intero elenco di elementi deve essere recuperato dall'origine dati.
Scrivere attraverso
Il write-through viene attivato in due casi:
- Al momento della creazione della struttura dati all'interno della cache (livello di raccolta).
- Dopo l'aggiunta di dati a una struttura dati già esistente (livello di elemento).
Caricatore di cache e aggiornamento
È possibile caricare automaticamente le strutture dati nella cache all'avvio della cache, utilizzando la funzione Cache Startup Loader. Ciò richiede l'implementazione di un'interfaccia ICacheLoader
con i suoi metodi Inoltre, in caso di modifiche o aggiornamenti nei dati, Cache Refresher
viene utilizzato per aggiornare i dati. Per maggiori dettagli, fare riferimento a Caricatore di cache e aggiornamento.
Cache cliente
La struttura dei dati non è memorizzata nella cache del client. Qualunque Ottieni l'operazione lo recupererà dalla cache principale ma non lo memorizzerà nella cache del client. Per maggiori dettagli, fare riferimento a Cache cliente. Ad esempio, quando blocchiamo un dizionario, viene bloccato l'intero dizionario e nessuna ulteriore operazione.
Blocco
Il NCache fornisce un efficiente meccanismo di blocco per la sincronizzazione dei dati e l'integrità all'interno dell'archivio cache aggiornato da diversi client paralleli. NCacheIl blocco interno di garantisce la coerenza delle strutture dati nell'intero cluster di cache per ogni aggiornamento della stessa struttura dati. Ad esempio, intero dizionario è bloccato quando blocchiamo un dizionario.
Notifiche di eventi
Gli eventi a livello di cache e gli eventi basati su chiave sono supportati insieme agli eventi a livello di struttura dati e possono essere registrati insieme su una struttura dati. Per esempio:
Viene creato un elenco nella cache. Ciò innesca il
ItemAdded
Cache Level Event e non l'evento della struttura dati.Un elemento viene aggiunto a questo elenco. Questo fa scattare il
ItemUpdated
Evento a livello di cache poiché l'elenco è stato aggiornato e ilItemAdded
l'evento struttura dati come nuovo elemento è stato aggiunto all'elenco.
Limiti
- Le strutture dati nidificate non sono ancora supportate.
- Il
CacheItem
non può essere memorizzato all'interno di una struttura dati. Ad esempio, un elenco diCacheItems
non è ancora supportato. - Gli oggetti personalizzati nell'HashSet non sono ancora supportati.
- Una chiave Dizionario può essere solo di tipo stringa.
Topologia Comportamento saggio
Topologia speculare
Nel Topologia speculare, le operazioni vengono eseguite sul nodo attivo. Queste operazioni vengono quindi replicate sul nodo passivo.
Topologia replicata
Nel Topologia replicata, le operazioni vengono eseguite sul nodo a cui è connesso il client, che poi replica le operazioni su tutti i nodi.
Topologia partizionata
In Topologia partizionata, l'intera struttura dati esiste sullo stesso nodo. È distribuito in base alla chiave. Ciò significa che non importa quanto sia grande il dizionario, esisterà su un nodo; il dizionario stesso non verrà partizionato tra i nodi.
Topologia di replica delle partizioni
In Topologia di replica delle partizioni, le operazioni si comportano come nella topologia partizionata. La struttura dei dati è distribuita in base alla chiave della cache e risiederà sullo stesso nodo. La sua replica esisterà sull'altro nodo.
Vedere anche
Elenca il comportamento e l'utilizzo nella cache
Comportamento della coda e utilizzo nella cache
Imposta comportamento e utilizzo nella cache
Comportamento e utilizzo del dizionario nella cache
Comportamento e utilizzo del contatore nella cache