Panoramica dei tipi e delle strategie di scadenza dei dati
NCache supporta l'invalidazione dei dati basata sul tempo in cui è possibile specificare l'ora o l'intervallo per la scadenza dei dati della cache. L'invalidazione dei dati basata sul tempo è applicabile nelle situazioni in cui è possibile determinare la frequenza della modifica dei dati. Ad esempio, le informazioni sulla regione potrebbero non essere aggiornate frequentemente, quindi puoi utilizzare una scadenza basata sul tempo per invalidare tali dati.
Inoltre, la scadenza dei dati obsoleti dalla cache comporta la fornitura al client di dati pertinenti e aggiornati. Ad esempio, le unità disponibili per un determinato prodotto possono essere modificate nel database, ma non aggiornate nella cache. Pertanto, la scadenza di tali dati dalla cache dopo un certo periodo di tempo comporterà il caricamento di nuovi dati nella cache alla successiva richiesta del client.
Un altro uso della scadenza dei dati è nel mantenimento delle sessioni. Se una sessione è rimasta inattiva per un certo periodo di tempo, può essere rimossa dalla cache poiché è inattiva.
Un valore di scadenza viene aggiunto agli elementi della cache. NCache mantiene un indice per gli articoli con scadenza basata sul tempo. Un thread dedicato controlla periodicamente i dati della cache per questi elementi scaduti dopo un intervallo di tempo configurabile denominato Intervallo di pulizia. Per impostazione predefinita, il suo valore è 15 secondi, il che significa che il tempo massimo che un elemento può impiegare per essere rimosso dalla cache è (tempo di scadenza + intervallo di pulizia + tempo impiegato dall'attività di pulizia). Pertanto, dovresti selezionare attentamente questo intervallo in base al tempo di scadenza dei tuoi dati.
Scadenza assoluta
Puoi aggiungere un elemento alla cache con scadenza assoluta specificando la data e l'ora esatte in cui l'elemento dovrà essere invalidato. Trascorso questo tempo, l'elemento verrà rimosso dalla cache. Qui, NCache mantiene l'ora UTC per la scadenza assoluta sui server di memorizzazione nella cache, facilitando il caso in cui client e server di cache si trovano in fusi orari diversi. Ciò significa che l'ora di scadenza specificata dai client (in qualsiasi fuso orario) verrà convertita in UTC sul server della cache e l'elemento scadrà nella data e nell'ora esatte specificate dai client. È possibile specificare il tempo di scadenza compreso tra secondi, giorni e mesi.
Note:
Questa funzionalità è disponibile anche in NCache Professional.
Tuttavia, tieni presente che l'elemento verrà rimosso alla scadenza del successivo intervallo di pulizia della cache. Ad esempio, se specifichi una scadenza di 10 secondi con un elemento e l'intervallo di pulizia della cache è configurato su 15 secondi, l'elemento verrà rimosso entro l'intervallo di tempo di 15-25 secondi.
Scadenza scorrevole
In questa scadenza, si desidera che la cache conservi i dati finché vengono utilizzati dall'applicazione e rimuova tutti i dati che non sono stati utilizzati per un periodo di tempo specifico. Ogni volta che l'utente accede ai dati della cache con scadenza scorrevole, la sua durata della cache si estenderà dell'intervallo di scadenza specifico, ad esempio, un elemento con scadenza scorrevole di 30 secondi verrà rimosso dalla cache se l'utente non vi accederà per almeno 30 secondi . Tuttavia, a ogni accesso, l'intervallo di scadenza dell'elemento verrà ripristinato a 30 secondi, prolungandone la durata nella cache di 30 secondi.
Note:
Questa funzionalità è disponibile anche in NCache Professional.
Ad esempio, i dati della sessione possono essere archiviati nella cache finché la sessione è attiva. Per questo tipo di dati è possibile specificare una scadenza scorrevole, diciamo 15 minuti. Pertanto, se l'attività si verifica entro l'intervallo di tempo specificato, l'intervallo di scadenza della sessione verrà reimpostato su 15 minuti nella cache.
Analogamente alla scadenza assoluta, gli elementi della cache con scadenza variabile vengono rimossi durante l'intervallo di pulizia della cache.
avvertimento
Se non viene fornita alcuna scadenza con l'elemento della cache, risiederà nella cache fino alla rimozione esplicita. Ciò può sovraccaricare lo spazio di archiviazione della cache.
Si prega di fare riferimento anche a Politiche di sfratto che è un'altra caratteristica di NCache per controllare l'utilizzo della memoria cache.
Scadenze predefinite
NCache supporta anche le scadenze predefinite che possono aiutarti a impostare le tue strategie di invalidamento dei dati con maggiore flessibilità. Le scadenze predefinite vengono configurate tramite il file NCache Centro Direzionale o config.ncconf, quindi non è necessario modificare il codice se si desidera modificare il valore di scadenza passato tramite API. Inoltre, se la stessa applicazione richiede più valori di scadenza, è possibile utilizzare scadenze predefinite.
NCache fornisce le seguenti scadenze predefinite:
- Assoluto predefinito
- Scorrimento predefinito
- Assoluto predefinito più lungo
- Predefinito Scorre più a lungo
Tutte le scadenze predefinite hanno un valore minimo di 5 secondi.
Supponiamo che Default Absolute sia configurato con 5 secondi e Default Sliding Longer expiration sia configurato con 10 secondi. Un oggetto del Prodotto La classe viene aggiunta alla cache con Default Absolute e viene aggiunta una sessione con scadenza Default Sliding Longer. Una volta aggiunto l'oggetto, è necessario modificare il valore di scadenza per entrambi su 15 secondi. Invece di reinserire gli oggetti con i nuovi valori di scadenza, puoi semplicemente modificare la configurazione dal file NCache Centro Direzionale o config.ncconf, senza alcuna modifica del codice.
Esistono più scenari in cui la configurazione della politica di scadenza tramite il NCache Il Centro gestione e l'API si sovrapporranno e attiveranno i seguenti comportamenti. Tieni presente che la scadenza non predefinita si riferisce alla scadenza assoluta e scorrevole.
Scadenza predefinita | Scadenza nella chiamata API | Comportamento |
---|---|---|
configurato | Scadenza predefinita | Scadenza predefinita |
configurato | Scadenza non predefinita | Scadenza non predefinita |
configurato | Nessuna | Scadenza predefinita |
non configurato | Scadenza predefinita | senza scadenza |
non configurato | Scadenza non predefinita | Scadenza non predefinita |
non configurato | Nessuna | senza scadenza |
Consigli
Nel CacheItem
, il valore predefinito di Absolute e Sliding Expiration è NoAbsoluteExpiration e NoSlidingExpiration. Pertanto, se è configurata la scadenza predefinita ma non è configurata alcuna scadenza nell'API con CacheItem
, NON avrà luogo alcuna scadenza poiché il relativo valore di scadenza predefinita sovrascrive la scadenza predefinita configurata.
Scadenza in ambiente cluster
In un ambiente di cache in cluster in cui sono coinvolti più server di memorizzazione nella cache, la scadenza viene gestita in modo diverso in vari NCache topologie.
- Nel Speculare topologia, il nodo attivo eseguirà la scadenza e la sincronizzerà sul nodo passivo.
- Nel replicato cache, la scadenza viene eseguita dal nodo coordinatore e l'operazione verrà quindi sincronizzata con gli altri nodi del cluster.
- Nel Partitioned topologia, poiché i dati sono distribuiti su nodi separati, ogni nodo è responsabile della scadenza del proprio elemento.
- Nel Partizione-Replica topologia, la scadenza verrà eseguita sui nodi attivi e si propagherà alle rispettive repliche.
- Cache del cliente utilizzerà la stessa scadenza abilitata sulla cache del cluster. Tuttavia, la Scadenza scorrevole viene aggiunta come Scadenza assoluta una volta sincronizzata con la cache, poiché causa incoerenza se il valore scorre nella cache del cluster ma non nella cache del client.
Vedere anche
Scadenza assoluta dei dati nella cache
Scadenza scorrevole
espulsione