Compartilhar via


Solucionar problemas de perda de dados no Redis Gerenciado do Azure (versão prévia)

Este artigo discute como diagnosticar perdas de dados reais ou percebidas que podem ocorrer no Redis Gerenciado do Azure (versão prévia).

Observação

Várias das etapas de solução de problemas neste guia incluem instruções para executar comandos do Redis e monitorar diversas métricas de desempenho. Para obter mais informações, consulte os artigos na seção Informações adicionais .

Perda parcial de chaves

O Redis Gerenciado do Azure não exclui as chaves aleatoriamente após elas terem sido armazenadas na memória. No entanto, ele remove as chaves em resposta às políticas de término ou remoção e aos comandos explícitos de exclusão de chaves. Execute esses comandos por meio da CLI.

As chaves que foram gravadas no nó primário em uma instância do Redis Gerenciado do Azure também podem não estar disponíveis em uma réplica imediatamente. Os dados são replicados do principal para a réplica de maneira assíncrona e sem bloqueio.

Se você descobrir que as chaves desapareceram do cache, verifique as seguintes causas possíveis:

Causa 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 sob pressão de memória.
Exclusão de chave As chaves são removidas por 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 removerá uma chave automaticamente se a chave tiver um tempo limite atribuído e esse período tiver passado. Para obter mais informações sobre o término da chave Redis, confira a documentação do comando EXPIRE. Os valores de tempo limite também podem ser definidos com o conjunto de comandos SET, SETEX, GETSET e outros comandos *STORE.

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


# Stats

expired_keys:46583

# Keyspace

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

Você também pode examinar as métricas de diagnóstico para o cache para ver se há uma correlação entre quando a chave ficou ausente e um pico nas chaves expiradas. Confira o apêndice de Depuração de falhas de keyspace do Redis para obter informações sobre como usar notificações de keyspace ou MONITOR para depurar esses tipos de problemas.

Remoção de chave

O Redis Gerenciado do Azure requer espaço de memória para armazenar dados. Ele limpa as chaves para liberar a memória disponível quando necessário. 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.

Você pode monitorar o número de chaves removidas usando o comando INFO:

# Stats

evicted_keys:13224

Você também pode examinar as métricas de diagnóstico para o cache para ver se há uma correlação entre quando a chave ficou ausente e um pico nas chaves removidas. Confira o apêndice de Depuração de falhas de keyspace do Redis para obter informações sobre como usar notificações de keyspace ou MONITORAR a depurar desses tipos de problemas.

Exclusão de chave

Os clientes do Redis podem emitir o comando DEL ou HDEL para remover explicitamente as chaves do Redis Gerenciado do Azure. Você pode acompanhar o número de operações de exclusão usando o comando INFO. Se os comandos DEL ou HDEL tiverem sido chamados, eles serão listados na seção 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ção assíncrona

Qualquer instância do Redis Gerenciado do Azure com alta disponibilidade habilitada é configurada com um nó primário e pelo menos uma réplica. Os dados são copiados do principal para uma réplica de maneira assíncrona usando um processo em segundo plano. O site redis.io descreve como a replicação de dados do Redis funciona em geral. Para cenários em que os clientes gravam em Redis com frequência, a perda de dados parcial pode ocorrer porque essa replicação não tem garantia de ser instantânea. Por exemplo, se o principal ficar inativo depois de um cliente gravar uma chave nele, mas antes de o processo em segundo plano ter a chance de enviar essa chave para a réplica, a chave será perdida quando a réplica assumir o controle como o novo principal.

Perda grande ou completa de chaves

Se a maioria das chaves ou todas elas tiverem desaparecido do seu cache, verifique as seguintes causas possíveis:

Causa Descrição
Liberação de chave As chaves foram limpas 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 descobrir se as chaves foram liberadas, use o comando INFO. A seção Commandstats mostra se o comando FLUSH foi chamado:

# 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 são mantidos nos computadores físicos ou nas VM (máquinas virtuais) que hospedam o Cache Redis. Os caches do 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 localizadas em domínios separados para falhas e atualizações para minimizar a chance de ambas ficarem não disponíveis simultaneamente. No entanto, se ocorrer uma interrupção de data center principal, as VMs ainda poderão ficar inativas ao mesmo tempo. Seus dados serão perdidos nesses casos raros.

Considere usar Persistência de dados do Redis e replicação geográfica para aprimorar a proteção de seus dados contra essas falhas de infraestrutura.

Informações adicionais

Estes artigos fornecem mais informações sobre como evitar a perda de dados: