Compartilhar via


Solucionar problemas de perda de dados no Redis Gerenciado do Azure

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

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 Redis Gerenciado do Azure 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 de uma instância gerenciada do Redis no Azure podem não estar imediatamente disponíveis em uma réplica. Os dados são replicados do primário para a réplica de forma assíncrona e de forma não bloqueante.

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

Motivo Descrição
Expiração da chave As chaves são removidas devido aos tempos limite definidos.
Remoção de chave As chaves são removidas quando há pouca memória.
Exclusão de chave Os clientes removem chaves executando comandos de exclusão explícitos.
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 Redis Gerenciado do Azure remove uma chave automaticamente quando o tempo limite para essa chave passa. Para obter mais informações sobre o término da chave Redis, confira 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 seção Stats 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 do 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.

Remoção de chave

O Redis Gerenciado do Azure precisa de espaço de memória para armazenar dados. Ele remove as chaves de acesso para liberar memória quando houver necessidade. Quando os valores used_memory ou used_memory_rss valores no comando INFO aproximam-se da configuração MaxMemory definida, o Redis Gerenciado do Azure inicia a remoção de 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 Redis Gerenciado do Azure. Acompanhe 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 Redis Gerenciado do Azure, 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ê poderá sofrer 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 gravar uma chave, mas antes que o processo de fundo a replique, a chave será perdida quando a réplica se tornar o novo primário.

Perda grande ou completa de chaves

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

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

Liberação de chave

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 comandos FLUSH é 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 do Redis

Redis é um armazenamento 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 à zona por padrão. Quando o shard principal nesse cache falha, o shard da réplica assume para atender aos dados automaticamente. Essas VMs estão em domínios separados para falhas e atualizações, o que minimiza a chance de ambos ficarem indisponíveis ao mesmo tempo. Se ocorrer uma interrupção importante do data center, as VMs ainda poderão ficar inoperantes. Nesses casos raros, você perde seus dados.

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