Condividi tramite


Risolvere i problemi di perdita di dati in Redis gestito di Azure (anteprima)

Questo articolo illustra come diagnosticare perdite di dati effettive o percepite che potrebbero verificarsi in Redis gestito di Azure (anteprima).

Nota

Diversi passaggi per la risoluzione dei problemi illustrati in questa guida includono istruzioni per eseguire comandi di Redis e monitorare svariate metriche delle prestazioni. Per altre informazioni e istruzioni, vedere gli articoli della sezione Informazioni aggiuntive .

Perdita parziale di chiavi

Azure Managed Redis non elimina in modo casuale le chiavi dopo che sono state archiviate in memoria. Tuttavia, rimuove le chiavi in risposta ai criteri di scadenza o rimozione e ai comandi espliciti di eliminazione della chiave. È possibile eseguire questi comandi tramite l'interfaccia della riga di comando.

Anche le chiavi scritte nel nodo primario in un'istanza di Redis gestita di Azure potrebbero non essere disponibili immediatamente in una replica. I dati vengono replicati dal primario alla replica in modo asincrono e non bloccante.

Se si ritiene che delle chiavi siano scomparse dalla cache, verificare le possibili cause seguenti:

Causa Descrizione
Scadenza della chiave Le chiavi vengono rimosse a causa dei timeout impostati.
Rimozione della chiave Le chiavi vengono rimosse in condizioni di utilizzo elevato della memoria.
Eliminazione della chiave Le chiavi vengono rimosse con comandi di eliminazione espliciti.
Replica asincrona Le chiavi non sono disponibili in una replica a causa di ritardi nella replica dei dati.

Scadenza della chiave

Redis gestito di Azure rimuove automaticamente una chiave se alla chiave viene assegnato un timeout e tale periodo è trascorso. Per altre informazioni sulla scadenza della chiave Redis, vedere la documentazione del comando EXPIRE. I valori di timeout possono essere impostati anche usando SET, SETEX, GETSET e altri comandi *STORE.

Per ottenere statistiche sul numero di chiavi scadute, usare il comando INFO. La sezione Stats mostra il numero totale di chiavi scadute. La sezione Keyspace fornisce ulteriori informazioni sul numero di chiavi con timeout e il valore di timeout medio.


# Stats

expired_keys:46583

# Keyspace

db0:keys=3450,expires=2,avg_ttl=91861015336

È anche possibile esaminare le metriche di diagnostica per la cache, per verificare se esista una correlazione tra il momento in cui la chiave è scomparsa e un picco di scadenza delle chiavi. Per informazioni sull'uso delle notifiche keyspace o di MONITOR per il debug dei problemi di questo tipo, vedere l'appendice di Debugging Redis Keyspace Misses (Debug dei mancati riscontri nello spazio delle chiavi Redis).

Rimozione della chiave

Redis gestito di Azure richiede spazio di memoria per archiviare i dati. Quando necessario, elimina le chiavi per liberare memoria disponibile. Quando i valori used_memory o used_memory_rss nel comando INFO si avvicinano all'impostazione maxmemory configurata, Azure Managed Redis avvia la rimozione delle chiavi dalla memoria in base ai criteri di cache.

È possibile monitorare il numero di chiavi rimosse usando il comando INFO:

# Stats

evicted_keys:13224

È anche possibile esaminare le metriche di diagnostica per la cache, per verificare se esista una correlazione tra il momento in cui la chiave è scomparsa e un picco di rimozione delle chiavi. Per informazioni sull'uso delle notifiche dello spazio delle chiavi o di MONITOR per il debug dei problemi di questo tipo, vedere l'appendice di Debugging Redis Keyspace Misses (Debug dei mancati riscontri nello spazio delle chiavi Redis).

Eliminazione della chiave

I client Redis possono eseguire il comando DEL o HDEL per rimuovere in modo esplicito le chiavi da Redis gestito di Azure. Si può tenere traccia del numero di operazioni di eliminazione usando il comando INFO. Se sono stati chiamati comandi DEL o HDEL, verranno elencati nella sezione Commandstats.

# Commandstats

cmdstat_del:calls=2,usec=90,usec_per_call=45.00

cmdstat_hdel:calls=1,usec=47,usec_per_call=47.00

Replica asincrona

Qualsiasi istanza di Redis gestita di Azure con disponibilità elevata abilitata viene configurata con un nodo primario e almeno una replica. I dati vengono copiati dal nodo primario a una replica in modo asincrono, con un processo in background. Il sito Web redis.io descrive il funzionamento generale della replica dei dati di Redis. Per gli scenari in cui i client scrivono spesso in Redis, è possibile che si verifichi una perdita parziale dei dati perché non è garantito che la replica sia istantanea. Se, ad esempio, il nodo primario diventa inattivo dopo che un client ha scritto una chiave su di esso, ma prima che il processo in background abbia la possibilità di inviare la chiave alla replica, la chiave va persa quando la replica diventa il nuovo nodo primario.

Perdita importante o totale delle chiavi

Se la maggior parte o tutte le chiavi sono scomparse dalla cache, verificare le possibili cause seguenti:

Causa Descrizione
Scaricamento delle chiavi Le chiavi sono state eliminate manualmente.
Errore dell'istanza di Redis Il server Redis non è disponibile.

Scaricamento delle chiavi

I client possono chiamare il comando FLUSHDB o FLUSHALL per rimuovere tutte le chiavi dall'istanza di Redis. Per verificare se le chiavi sono state scaricate, usare il comando INFO. La sezione Commandstats indica se è stato chiamato il comando FLUSH:

# Commandstats

cmdstat_flushall:calls=2,usec=112,usec_per_call=56.00

cmdstat_flushdb:calls=1,usec=110,usec_per_call=52.00

Errore dell'istanza di Redis

Redis è un archivio dati in memoria. I dati vengono conservati nelle macchine virtuali o fisiche che ospitano la cache Redis. Le cache Redis gestite di Azure offrono resilienza elevata rispetto alla perdita di dati fornendo cache resilienti per la zona per impostazione predefinita. Quando la partizione primaria in tale cache ha esito negativo, la partizione di replica assume il controllo per gestire automaticamente i dati. Queste macchine virtuali si trovano in domini distinti per gli errori e gli aggiornamenti, per ridurre al minimo le possibilità che entrambi diventino non disponibili contemporaneamente. Se si verifica un'interruzione importante del data center, tuttavia, le macchine virtuali potrebbero continuare a essere inattive. In questi rari casi, i dati andranno persi.

Prendere in considerazione l'uso della persistenza dei dati Redis e la replica geografica per migliorare la protezione dei dati in caso di errori dell'infrastruttura.

Informazioni aggiuntive

Questi articoli forniscono altre informazioni su come prevenire la perdita di dati: