Scadenza e rimozione (Memorizzazione nella cache di AppFabric 1.1)

In Microsoft AppFabric 1.1 per Windows Server gli oggetti memorizzati nella cache non rimangono in memoria per un tempo indefinito. Oltre a essere rimossi dalla cache in modo esplicito tramite l'utilizzo del metodo Remove, gli oggetti della cache possono anche scadere oppure essere eliminati dal cluster di cache.

Scadenza

La scadenza della cache consente al cluster di cache di rimuovere automaticamente gli oggetti dalla cache. Quando si utilizzano i metodi Put o Add, è possibile impostare un valore di timeout dell'oggetto facoltativo per lo specifico oggetto della cache. Tale valore determina il tempo di permanenza nella cache. Se il valore di timeout dell'oggetto non viene fornito nel momento in cui l'oggetto viene memorizzato nella cache, per determinare la durata dell'oggetto nella cache si utilizzano i valori specificati nelle impostazioni di configurazione del cluster.

Se gli oggetti memorizzati nella cache vengono bloccati a causa della concorrenza, non verranno rimossi dalla cache nemmeno dopo la scadenza. Nel caso in cui siano scaduti, non appena vengono sbloccati verranno rimossi immediatamente dalla cache.

Per impedire la rimozione istantanea quando si sbloccano oggetti scaduti, il metodo Unlock supporta anche l'estensione della scadenza dell'oggetto memorizzato nella cache. Per ulteriori informazioni sui modelli e i metodi di concorrenza supportati, vedere Modelli di concorrenza (Memorizzazione nella cache di AppFabric 1.1) e Metodi di concorrenza.

Invalidamento della cache locale

Esistono due tipi complementari di invalidamento per la cache locale: invalidamento basato sul timeout e invalidamento basato sulla notifica. Per un esempio dell'attivazione della cache locale a livello di programmazione, vedere Abilitare la cache locale di AppFabric 1.1. Per un esempio dell'utilizzo di un file di configurazione dell'applicazione per abilitare la cache locale, vedere Abilitare la cache locale (XML).

Suggerimento

Una volta che gli oggetti vengono memorizzati nella cache locale, l'applicazione continua a utilizzarli fino a quando non vengono invalidati, a prescindere dal fatto che vengano aggiornati da un altro client nel cluster di cache. Per questo motivo, è opportuno utilizzare la cache locale per i dati che non vengono modificati frequentemente.

Invalidamento basato sul timeout

Una volta che gli oggetti vengono scaricati nella cache locale, vi restano fino a quando non raggiungono il valore di timeout dell'oggetto specificato nelle impostazioni di configurazione del client di cache. Quando questo valore viene raggiunto, gli oggetti vengono invalidati, per cui l'oggetto può essere aggiornato dal cluster di cache quando viene richiesto la volta successiva.

Invalidamento basato sulla notifica

Se nel client di cache è attivata la cache locale, è inoltre possibile utilizzare le notifiche cache per invalidare automaticamente gli oggetti memorizzati localmente nella cache. Se si accorcia la durata di tali oggetti in base alle esigenze, è possibile ridurre l'eventualità che l'applicazione utilizzi dati obsoleti.

Quando si utilizzano le notifiche cache, l'applicazione effettua un controllo con il cluster di cache a intervalli regolari per verificare se sono disponibili nuove notifiche. Tale intervallo, definito intervallo di polling, equivale a 300 secondi per impostazione predefinita. L'intervallo di polling viene specificato in unità di secondi nelle impostazioni di configurazione dell'applicazione. È opportuno notare che anche con l'invalidamento basato sulla notifica, i timeout continuano a essere applicati agli elementi della cache locale. Ciò rende l'invalidamento basato sulla notifica complementare rispetto a quello basato sul timeout.

Avviso

Per fare in modo che l'applicazione utilizzi le notifiche, è necessario attivarle in una cache specifica. Utilizzare il parametro NotificationsEnabled con i comandi New-Cache o Set-CacheConfig. Per ulteriori informazioni, vedere Amministrazione della cache con Windows PowerShell (AppFabric 1.1).

Eliminazione

Per mantenere la capacità di memoria disponibile per la cache di ciascun host della cache, AppFabric supporta l'eliminazione degli elementi utilizzati meno di recente. Per garantire una distribuzione uniforme della memoria tra tutti gli host della cache nel cluster vengono utilizzate le soglie, altrimenti denominate limiti.

Quando il consumo di memoria del servizio della cache supera la soglia del limite inferiore, AppFabric inizia a rimuovere gli oggetti già scaduti.

Quando il consumo di memoria supera la soglia del limite superiore, gli oggetti vengono eliminati dalla memoria a prescindere dalla scadenza, fino a quando il consumo di memoria non ritorna al limite inferiore. Gli oggetti che vengono memorizzati nella cache successivamente possono essere reindirizzati ad altri host per mantenere una distribuzione ottimale della memoria.

Specifica delle impostazioni di scadenza ed eliminazione

Il comportamento relativo alla scadenza e all'eliminazione viene configurato a livello della cache specifica nelle impostazioni di configurazione del cluster. Tali impostazioni a livello di cache possono essere configurate con lo strumento di amministrazione della cache basato su Windows PowerShell. Per ulteriori informazioni, vedere Amministrazione della cache con Windows PowerShell (AppFabric 1.1).

Inoltre, i seguenti metodi consentono di ignorare le impostazioni predefinite presenti nella cache:

  • I metodi Add e Put forniscono gli overload che consentono di specificare un valore di timeout di scadenza solo per l'oggetto aggiunto alla cache.

  • I metodi PutAndUnlock e Unlock forniscono gli overload che consentono di estendere la scadenza di un oggetto dopo averlo sbloccato.

  • Il metodo ResetObjectTimeout consente di estendere in modo esplicito la durata di un oggetto, ignorando le impostazioni di scadenza della cache.

A prescindere dalle impostazioni di scadenza o eliminazione, se un cluster di cache viene riavviato, tutti gli oggetti della cache vengono scaricati. Se nella cache non vengono trovati dati, il codice dell'applicazione dovrà ricaricare la cache da un'origine dati. Tale operazione viene spesso definita modello di programmazione che prescinde dalla cache.

Vedere anche

Concetti

Diagramma dell'architettura fisica della memorizzazione nella cache di AppFabric (Memorizzazione nella cache di AppFabric 1.1)
Diagramma dell'architettura logica della memorizzazione nella cache di AppFabric (Memorizzazione nella cache di AppFabric 1.1)

  2012-03-05