Introdução
Redis é um armazenamento de dados de chave-valor em memória, de código aberto. Ele vem com vários comandos que podem ajudar na solução de problemas e na depuração de questões. Devido à natureza do Redis como um armazenamento de dados de chave-valor em memória, muitos desses comandos focam na gestão de memória, mas há outros que são valiosos para fornecer uma visão geral do estado do seu servidor Redis. Este tutorial fornecerá detalhes sobre como usar alguns desses comandos para ajudar a diagnosticar e resolver problemas que você pode encontrar ao usar o Redis.
Como Usar Este Guia
Este guia é escrito como uma folha de dicas com exemplos autossuficientes. Encorajamos você a pular para qualquer seção que seja relevante para a tarefa que você está tentando concluir.
Os comandos mostrados neste guia foram testados em um servidor Ubuntu 22.04 executando a versão do Redis 6.0.16. Para configurar um ambiente semelhante, você pode seguir Passo 1 do nosso guia sobre Como Instalar e Proteger o Redis no Ubuntu 22.04. Demonstraremos como esses comandos se comportam executando-os com redis-cli
, a interface de linha de comando do Redis. Se estiver usando uma interface Redis diferente — Redli, por exemplo — a saída exata de certos comandos pode ser diferente.
Alternativamente, você pode provisionar uma instância de banco de dados Redis gerenciada para testar esses comandos, mas dependendo do nível de controle permitido pelo seu provedor de banco de dados, alguns comandos neste guia podem não funcionar conforme descrito. Para provisionar um Banco de Dados Gerenciado da DigitalOcean, siga nossa documentação do produto Bancos de Dados Gerenciados. Em seguida, você deve instalar o Redli ou configurar um túnel TLS para se conectar ao Banco de Dados Gerenciado por TLS.
Resolução de Problemas de Memória
memory usage
informa quanto de memória está sendo atualmente usada por uma única chave. Ele recebe o nome de uma chave como argumento e retorna o número de bytes que ela utiliza. Primeiro, defina uma variável de exemplo:
- set key_meaningOfLife "Food"
Em seguida, verifique a memória com memory usage
:
- memory usage key_meaningOfLife
Output(integer) 88
Para ter uma compreensão mais geral de como seu servidor Redis está usando a memória, você pode executar o comando memory stats
:
- memory stats
Este comando retorna uma matriz de métricas relacionadas à memória e seus valores. As seguintes são as métricas reportadas pelo memory stats
:
pico.alocado
: O número máximo de bytes consumidos pelo Redistotal.alocado
: O número total de bytes alocados pelo Redisinicial.alocado
: O número inicial de bytes consumidos pelo Redis na inicializaçãoreplicação.buffer
: O tamanho do buffer de replicação, em bytesclientes.replicados
: O tamanho total de todos os custos adicionais de réplica, significando os buffers de saída e de consulta e os contextos de conexãoclientes.normais
: O tamanho total de todos os custos do clienteaof.buffer
: O tamanho total dos buffers do arquivo apenas de apêndice atual e de reescritadb.0
: Os custos dos dicionários principais e de expiração para cada banco de dados em uso no servidor, relatados em bytescusto.total
: A soma de todos os custos usados para gerenciar o espaço de chaves do Redischaves.contagem
: O número total de chaves armazenadas em todos os bancos de dados no servidorchaves.bytes-por-chave
: A relação entre o uso líquido de memória do servidor echaves.contagem
conjunto.bytes
: O tamanho do conjunto de dados, em bytesconjunto.percentagem
: A porcentagem do uso líquido de memória do Redis ocupada porconjunto.bytes
pico.percentagem
: A porcentagem depico.alocado
retirada detotal.alocado
fragmentação
: A razão entre a quantidade de memória atualmente em uso dividida pela memória física que o Redis está realmente usando
memory malloc-stats
fornece um relatório estatístico interno do jemalloc, o alocador de memória usado pelo Redis em sistemas Linux:
- memory malloc-stats
Se parecer que você está enfrentando problemas relacionados à memória, mas analisar a saída dos comandos anteriores não for útil, você pode tentar executar memory doctor
:
- memory doctor
Esta funcionalidade irá mostrar quaisquer problemas de consumo de memória que ele possa encontrar e sugerir soluções potenciais.
Obtendo Informações Gerais sobre Sua Instância do Redis
A debugging command that isn’t directly related to memory management is monitor
. This command allows you to review a constant stream of every command processed by the Redis server:
- monitor
OutputOK
1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared"
1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"
Outro comando útil para depuração é o info
, que retorna vários blocos de informações e estatísticas sobre o servidor:
- info
Output# Server
redis_version:6.0.16
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a3fdef44459b3ad6
redis_mode:standalone
os:Linux 5.15.0-41-generic x86_64
. . .
Este comando retorna muitas informações. Se você quiser retornar apenas um bloco de informações, pode especificá-lo como argumento para o info
:
- info CPU
Output# CPU
used_cpu_sys:173.16
used_cpu_user:70.89
used_cpu_sys_children:0.01
used_cpu_user_children:0.04
Observe que as informações retornadas pelo comando info
dependerão da versão do Redis que você está usando.
Usando o Comando keys
O comando keys
é útil em casos em que você esqueceu o nome de uma chave, ou talvez tenha criado uma, mas acidentalmente errou seu nome. keys
procura por chaves que correspondem a um padrão:
- keys pattern
As seguintes variáveis no estilo glob são suportadas:
?
é um caractere curinga que representa qualquer caractere único, entãos?mmy
corresponde asammy
,sommy
, esqmmy
*
é um caractere curinga que representa qualquer número de caracteres, incluindo nenhum, entãosa*y
corresponde asammy
,say
,sammmmmmy
, esalmony
- Você pode especificar dois ou mais caracteres que o padrão pode incluir, envolvendo-os em colchetes, então
s[ai]mmy
irá corresponder asammy
esimmy
, mas não asummy
- Para definir um caractere curinga que ignora uma ou mais letras, envolva-os em colchetes e os preceda com um acento circunflexo (
^
), entãos[^oi]mmy
corresponderá asammy
esxmmy
, mas não asommy
ousimmy
- Para definir um caractere curinga que inclua um intervalo de letras, separe o início e o fim do intervalo com um hífen e envolva-o em colchetes, então
s[a-o]mmy
corresponderá asammy
,skmmy
, esommy
, mas não asrmmy
Aviso: A documentação do Redis adverte que o keys
quase nunca deve ser usado em um ambiente de produção, pois pode ter um impacto negativo significativo no desempenho.
Conclusão
Este guia detalha uma série de comandos úteis para solucionar e resolver problemas que você pode encontrar ao trabalhar com o Redis. Se houver outros comandos, argumentos ou procedimentos relacionados que você gostaria de aprender neste guia, por favor, pergunte ou faça sugestões nos comentários.
Para obter mais informações sobre os comandos do Redis, confira nossa série de tutoriais sobre Como Gerenciar um Banco de Dados Redis.
Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis