Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come diagnosticare la perdita di dati parziale o completa che si verifica in Cache Redis di Azure.
Importante
Cache di Azure per Redis ha annunciato la sequenza temporale di ritiro per tutti gli SKU. È consigliabile spostare le istanze di Cache Redis di Azure esistenti in Azure Managed Redis non appena è possibile.
Per altre informazioni sul ritiro:
Perdita parziale della chiave
Cache Redis di Azure non elimina in modo casuale le chiavi dopo l'archiviazione in memoria, ma rimuove le chiavi in risposta ai criteri di scadenza, ai criteri di rimozione e ai comandi espliciti di eliminazione delle chiavi. È possibile eseguire questi comandi nella console o tramite l'interfaccia della riga di comando di Redis.
Le chiavi scritte nel nodo primario in un'istanza Premium o Standard di Azure Redis potrebbero non essere immediatamente disponibili in una replica. I dati vengono replicati dal database primario alla replica in modo asincrono e non bloccante.
Se alcune chiavi scompaiono dalla cache, verificare le possibili cause seguenti:
| Causa | Descrizione |
|---|---|
| Scadenza della chiave | Le chiavi sono state rimosse a causa dei timeout impostati su di esse. |
| Rimozione della chiave | I tasti sono stati rimossi a causa di pressione sulla memoria. |
| Eliminazione della chiave | Le chiavi sono state rimosse da comandi di eliminazione espliciti. |
| Replica asincrona | Le chiavi non erano disponibili in una replica a causa di ritardi nella replica dei dati. |
Scadenza della chiave
Cache Redis di Azure rimuove automaticamente una chiave se alla chiave viene assegnato un timeout e tale periodo passa. Per altre informazioni sulla scadenza della chiave Redis, vedere la documentazione del comando Redis EXPIRE . I valori di timeout possono essere impostati anche usando SET, SETEX, GETSET e altri *STORE comandi.
Per ottenere statistiche sul numero di chiavi scadute, usare il comando INFO . La sezione Stats mostra il numero totale di chiavi scadute. La Keyspace sezione fornisce altre 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
Rimozione della chiave
Cache Redis di Azure richiede spazio di memoria per archiviare i dati e ripulire le chiavi per liberare memoria disponibile quando necessario. Quando i valori del used_memory o used_memory_rss si avvicinano all'impostazione maxmemory configurata, Azure Redis avvia l'espulsione 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
Eliminazione della chiave
I client Redis possono eseguire i comandi Redis DEL o HDEL per rimuovere in modo esplicito le chiavi da Azure Redis. Si può tenere traccia del numero di operazioni di eliminazione usando il comando INFO. Se i comandi DEL o HDEL sono stati chiamati, vengono 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
Le istanze di Cache Redis di Azure di livello Standard o Premium sono configurate 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.
La replica redis nel sito Web Redis descrive il funzionamento generale della replica dei dati Redis. Per gli scenari in cui i client scrivono frequentemente in Redis, la perdita parziale di dati può verificarsi perché la replica non è progettata per essere istantanea.
Ad esempio, se il database primario diventa inattivo dopo che un client scrive una chiave in esso, ma prima che il processo in background abbia la possibilità di inviare tale chiave alla replica, la chiave viene persa quando la replica assume il ruolo di nuova replica primaria.
Perdita totale delle chiavi
Se la maggior parte o tutte le chiavi scompaiono dalla cache, verificare le possibili cause seguenti:
| Causa | Descrizione |
|---|---|
| Scaricamento delle chiavi | Le chiavi sono state rimosse manualmente. |
| Selezione del database errato | Azure Redis è impostato per l'uso di un database non predefinito. |
| Errore dell'istanza di Redis | Il server Redis non è disponibile. |
Scaricamento delle chiavi
I client Redis di Azure possono chiamare il comando Redis FLUSHDB per rimuovere tutte le chiavi in un singolo database o FLUSHALL per rimuovere tutte le chiavi da tutti i database in una cache Redis. Per verificare se le chiavi sono state svuotate, usare il comando INFO. La Commandstats sezione mostra se è stato chiamato uno dei FLUSH comandi.
# Commandstats
cmdstat_flushall:calls=2,usec=112,usec_per_call=56.00
cmdstat_flushdb:calls=1,usec=110,usec_per_call=52.00
Selezione del database errato
Ogni database è un'unità separata logicamente e include un set di dati diverso. La cache di Azure per Redis usa per impostazione predefinita il database db0. Se si passa a un altro database, db1 ad esempio e si tenta di leggere le chiavi, Azure Redis non li trova. Usare il comando Redis SELECT per cercare le chiavi in altri database disponibili.
Errore dell'istanza di Redis
Redis mantiene i dati in memoria nelle macchine virtuali o fisiche che ospitano la cache Redis. Un'istanza di Cache Redis di Azure di livello Basic viene eseguita solo in una singola macchina virtuale (VM). Se la macchina virtuale diventa inattiva, tutti i dati archiviati nella cache andranno persi.
Le cache nei livelli Standard e Premium offrono maggiore resilienza rispetto alla perdita di dati usando due macchine virtuali in una configurazione replicata. Quando si verifica un errore nel nodo primario di una cache di questo tipo, il nodo di replica assume automaticamente il controllo per inviare i dati.
Queste macchine virtuali si trovano in domini separati per errori e aggiornamenti, per ridurre al minimo la probabilità che entrambe le macchine virtuali diventino non disponibili contemporaneamente. Se si verifica un'interruzione del data center principale, tuttavia, entrambe le macchine virtuali potrebbero arrestarsi. In questi rari casi, i dati andranno persi. È consigliabile usare la persistenza dei dati e la replica geografica per migliorare la protezione dei dati dagli errori dell'infrastruttura.