Partilhar via


Solucionar problemas de perda de dados no Azure Managed Redis

Este artigo explica como diagnosticar a perda de dados real ou percebida que pode ocorrer no Azure Managed Redis.

Observação

Algumas etapas de solução de problemas neste guia incluem instruções para executar comandos Redis e monitorar métricas de desempenho. Para obter mais informações, consulte os artigos em Conteúdo relacionado.

Perda parcial de chaves

O Azure Managed Redis não exclui chaves aleatoriamente depois de armazená-las na memória. Ele remove chaves devido a políticas de expiração, políticas de remoção ou comandos explícitos de exclusão de chave. Execute esses comandos usando a CLI. As chaves gravadas no nó primário numa instância de Azure Managed Redis podem não estar imediatamente disponíveis numa réplica. Os dados são replicados do primário para a réplica de forma assíncrona e sem bloqueios.

Se as chaves desaparecerem do cache, verifique as seguintes causas possíveis:

Motivo Descrição
Expiração da chave As chaves são removidas devido a limites de tempo definidos para elas.
Despejo de chaves As chaves são removidas quando a memória está baixa.
Exclusão de chave Os clientes removem chaves executando comandos explícitos de exclusão.
Replicação assíncrona As chaves não estão disponíveis em uma réplica devido a atrasos na replicação de dados.

Expiração da chave

O Azure Managed Redis remove uma chave automaticamente quando o tempo limite dessa chave passa. Para obter mais informações sobre a expiração da chave Redis, consulte a documentação do comando EXPIRE . Você também pode definir valores de tempo limite usando os comandos SET, SETEX, GETSET e outros * STORE .

Para ver quantas chaves expiraram, use o comando INFO . A Stats seção mostra o número total de chaves expiradas. A Keyspace seção fornece mais informações sobre o número de chaves com tempos limite e o valor médio de tempo limite.


# Stats

expired_keys:46583

# Keyspace

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

Verifique as métricas de diagnóstico do cache para ver se há uma correlação entre quando a chave desapareceu e um pico nas chaves removidas.

Despejo de chaves

O Azure Managed Redis precisa de espaço de memória para armazenar dados. Ele remove as chaves para liberar memória quando necessário. Quando os valores used_memory ou used_memory_rss no comando INFO se aproximam da configuração maxmemory configurada, o Azure Managed Redis começa a remover chaves da memória com base na política de cache.

Monitore o número de chaves removidas usando o comando INFO :

# Stats

evicted_keys:13224

Exclusão de chave

Os clientes Redis executam o comando DEL ou HDEL para remover chaves do Azure Managed Redis. Controle o número de operações de exclusão usando o comando INFO . Se os comandos DEL ou HDEL forem executados, eles serão listados na Commandstats seção .

# Commandstats

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

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

Replicação assíncrona

Quando você habilita a alta disponibilidade no Azure Managed Redis, o serviço cria um nó primário e pelo menos uma réplica. O sistema copia dados do primário para a réplica de forma assíncrona usando um processo em segundo plano. Consulte a documentação de replicação do Redis para obter mais detalhes.

Como a replicação não é instantânea, você pode ter perda parcial de dados se os clientes gravarem no Redis com frequência. Por exemplo, se o nó primário falhar depois que um cliente grava uma chave, mas antes que o processo em segundo plano a replique, a chave será perdida quando a réplica se tornar o novo nó primário.

Perda de chaves importante ou completa

Se a maioria ou todas as chaves desaparecerem do cache, verifique estas possíveis causas:

Motivo Descrição
Lavagem de chaves Alguém eliminou as chaves manualmente.
Falha na instância do Redis O servidor Redis não está disponível.

Lavagem de chaves

Os clientes podem chamar o comando FLUSHDB ou FLUSHALL para remover todas as chaves da instância do Redis. Para verificar se as chaves estão limpas, use o comando INFO. A Commandstats seção mostra se um dos FLUSH comandos é executado:

# Commandstats

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

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

Falha na instância de Redis

O Redis é um arquivo de dados na memória. Os dados permanecem nas máquinas físicas ou virtuais (VM) que hospedam o cache Redis. Os caches Redis gerenciados do Azure oferecem alta resiliência contra perda de dados, fornecendo caches resilientes de zona por padrão. Quando o fragmento principal nesse cache falha, o fragmento de réplica assume automaticamente o controle para servir dados. Essas VMs estão em domínios separados para falhas e atualizações, o que minimiza a chance de ambas ficarem indisponíveis ao mesmo tempo. ** Se ocorrer uma grande falha no data center, as VMs ainda podem falhar em simultâneo. Nestes casos raros, perde os seus dados.

Use a persistência de dados Redis e a replicação geográfica para proteger melhor seus dados contra essas falhas de infraestrutura.