Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve como diagnosticar a perda de dados parcial ou completa que ocorre no Cache do Azure para Redis.
Perda parcial da chave
O Cache Redis do Azure não exclui chaves aleatoriamente depois que elas são armazenadas na memória, mas remove chaves em resposta a políticas de expiração, políticas de remoção e comandos explícitos de exclusão de chaves. Você pode executar esses comandos no console ou através da CLI do Redis.
As chaves gravadas no nó principal numa instância Premium ou Standard do Azure Redis podem não estar disponíveis numa réplica imediatamente. Os dados são replicados do primário para a réplica de forma assíncrona e sem bloqueios.
Se algumas chaves desaparecerem do cache, verifique as seguintes causas possíveis:
Causa | Descrição |
---|---|
Expiração da chave | As chaves foram removidas devido a tempos limite definidos nelas. |
Despejo de chaves | As chaves foram removidas devido à pressão de memória. |
Exclusão de chave | As chaves foram removidas por comandos explícitos de exclusão. |
Replicação assíncrona | As chaves não estavam disponíveis em uma réplica devido a atrasos na replicação de dados. |
Expiração da chave
O Cache Redis do Azure remove uma chave automaticamente se for atribuído um tempo limite à chave e esse período passar. Para obter mais informações sobre a expiração da chave Redis, consulte a documentação do comando Redis EXPIRE . Os valores de tempo limite também podem ser definidos usando os comandos SET, SETEX,GETSET e outros *STORE
.
Para obter estatísticas sobre 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
Despejo de chaves
O Cache Redis do Azure requer espaço de memória para armazenar dados e limpa chaves para liberar memória disponível quando necessário. Quando os valores used_memory
ou used_memory_rss
se aproximam da configuração definida maxmemory
, o Azure Redis começa a remover 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
Exclusão de chave
Os clientes Redis podem emitir os comandos Redis DEL ou HDEL para remover explicitamente as chaves do Azure Redis. Você pode controlar o número de operações de exclusão usando o comando INFO . Se DEL
ou HDEL
comandos foram chamados, eles estã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
As instâncias do Azure Cache para Redis das camadas Standard ou Premium são configuradas com um nó primário e pelo menos uma réplica. Os dados são copiados do primário para uma réplica de forma assíncrona usando um processo em segundo plano.
A replicação do Redis no site do Redis descreve como a replicação de dados do Redis funciona em geral. Para cenários em que os clientes gravam no Redis com frequência, a perda parcial de dados pode ocorrer porque a replicação não foi projetada para ser instantânea.
Por exemplo, se o primário ficar inativo depois que um cliente gravar uma chave nele, mas antes que o processo em segundo plano tenha a chance de enviar essa chave para a réplica, a chave será perdida quando a réplica assumir o controle como o novo primário.
Perda completa da chave
Se a maioria ou todas as chaves desaparecerem do cache, verifique as seguintes causas possíveis:
Causa | Descrição |
---|---|
Lavagem de chaves | As chaves foram eliminadas manualmente. |
Seleção incorreta do banco de dados | O Azure Redis está definido para usar um banco de dados não padrão. |
Falha na instância do Redis | O servidor Redis não está disponível. |
Lavagem de chaves
Os clientes Redis do Azure podem chamar o comando Redis FLUSHDB para remover todas as chaves em um único banco de dados ou FLUSHALL para remover todas as chaves de todos os bancos de dados em um cache Redis. Para saber se as chaves foram liberadas, use o comando INFO . A Commandstats
seção mostra se um dos comandos 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
Seleção incorreta do banco de dados
Cada base de dados é uma unidade logicamente separada e contém um conjunto de dados diferente. O Cache Redis do Azure usa o db0
banco de dados por padrão. Se você alternar para outro banco de dados, como db1
e tentar ler chaves dele, o Azure Redis não as encontrará. Use o comando Redis SELECT para procurar chaves em outros bancos de dados disponíveis.
Falha na instância de Redis
O Redis mantém os dados na memória nas máquinas físicas ou virtuais (VMs) que hospedam o cache do Redis. Uma instância do Cache do Azure para Redis de camada básica é executada em apenas uma única máquina virtual (VM). Se essa VM ficar inativa, todos os dados armazenados no cache serão perdidos.
Os caches nas camadas Standard e Premium oferecem maior resiliência contra perda de dados usando duas VMs em uma configuração replicada. Quando o nó primário dessa cache falha, o nó de réplica assume o controlo para servir dados automaticamente.
Essas VMs estão localizadas em domínios separados para falhas e atualizações, para minimizar a chance de ambas as VMs ficarem indisponíveis ao mesmo tempo. No entanto, se ocorrer uma grande interrupção do datacenter, ambas as VMs poderão ficar inativas. Nestes casos raros, os seus dados são perdidos. Considere o uso da persistência de dados e da replicação geográfica para melhorar a proteção dos dados contra falhas de infraestrutura.