Como Solucionar Problemas no Redis

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.

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:

  1. set key_meaningOfLife "Food"

Em seguida, verifique a memória com memory usage:

  1. 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:

  1. 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 Redis
  • total.alocado: O número total de bytes alocados pelo Redis
  • inicial.alocado: O número inicial de bytes consumidos pelo Redis na inicialização
  • replicação.buffer: O tamanho do buffer de replicação, em bytes
  • clientes.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ão
  • clientes.normais: O tamanho total de todos os custos do cliente
  • aof.buffer: O tamanho total dos buffers do arquivo apenas de apêndice atual e de reescrita
  • db.0: Os custos dos dicionários principais e de expiração para cada banco de dados em uso no servidor, relatados em bytes
  • custo.total: A soma de todos os custos usados para gerenciar o espaço de chaves do Redis
  • chaves.contagem: O número total de chaves armazenadas em todos os bancos de dados no servidor
  • chaves.bytes-por-chave: A relação entre o uso líquido de memória do servidor e chaves.contagem
  • conjunto.bytes: O tamanho do conjunto de dados, em bytes
  • conjunto.percentagem: A porcentagem do uso líquido de memória do Redis ocupada por conjunto.bytes
  • pico.percentagem: A porcentagem de pico.alocado retirada de total.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:

  1. 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:

  1. 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:

  1. monitor
Output
OK 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:

  1. 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:

  1. 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:

  1. keys pattern

As seguintes variáveis no estilo glob são suportadas:

  • ? é um caractere curinga que representa qualquer caractere único, então s?mmy corresponde a sammy, sommy, e sqmmy
  • * é um caractere curinga que representa qualquer número de caracteres, incluindo nenhum, então sa*y corresponde a sammy, say, sammmmmmy, e salmony
  • Você pode especificar dois ou mais caracteres que o padrão pode incluir, envolvendo-os em colchetes, então s[ai]mmy irá corresponder a sammy e simmy, mas não a summy
  • Para definir um caractere curinga que ignora uma ou mais letras, envolva-os em colchetes e os preceda com um acento circunflexo (^), então s[^oi]mmy corresponderá a sammy e sxmmy, mas não a sommy ou simmy
  • 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á a sammy, skmmy, e sommy, mas não a srmmy

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