Como Resolver 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 resoluçã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ê possa encontrar ao usar o Redis.

Como Usar Este Guia

Este guia é escrito como uma folha de dicas com exemplos autocontidos. Encorajamos você a pular para qualquer seção que seja relevante para a tarefa que está tentando completar.

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 o 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 você estiver usando uma interface Redis diferente — como Redli, por exemplo — a saída exata de certos comandos pode ser diferente.

Alternativamente, você poderia 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 de 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.

uso de memória informa quanto de memória está sendo atualmente usada por uma única chave. Ele recebe o nome de uma chave como argumento e produz o número de bytes que ela usa. Primeiro, defina uma variável de exemplo:

  1. set key_meaningOfLife "Food"

Em seguida, verifique a memória com uso de memória:

  1. memory usage key_meaningOfLife
Output
(integer) 88

Para entender de forma mais geral como o seu servidor Redis está utilizando a memória, você pode executar o comando estatísticas de memória:

  1. memory stats

Este comando produz uma série de métricas relacionadas à memória e seus valores. As seguintes são as métricas relatadas por estatísticas de memória:

  • pico.alocado: O número máximo de bytes consumidos pelo Redis
  • total.alocado: O número total de bytes alocados pelo Redis
  • inicio.alocado: O número inicial de bytes consumidos pelo Redis na inicialização
  • retaguarda.replicação: O tamanho do backlog de replicação, em bytes
  • clientes.replicas: O tamanho total de todos os overheads 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 overheads de cliente
  • buffer.aof: O tamanho total dos buffers do arquivo apenas de anexos atuais e de reescrita
  • db.0: Os overheads dos dicionários principais e de expiração para cada banco de dados em uso no servidor, relatados em bytes
  • overhead.total: A soma de todos os overheads usados para gerenciar o espaço de chave do Redis
  • chaves.contagem: O número total de chaves armazenadas em todos os bancos de dados no servidor
  • chaves.bytes-por-chave: A razã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.percentual: O percentual do uso líquido de memória do Redis ocupado por conjunto.bytes
  • pico.percentual: O percentual de pico.alocado retirado de total.alocado
  • fragmentação: A proporção da quantidade de memória atualmente em uso dividida pela memória física que o Redis está realmente utilizando

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 função irá relatar quaisquer problemas de consumo de memória que 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 é 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 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 nos casos em que você esqueceu o nome de uma chave, ou talvez você tenha criado uma, mas acidentalmente errou seu nome. keys procura por chaves que correspondam 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 caractere, 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 corresponderá a sammy e simmy, mas não summy
  • Para definir um curinga que ignora uma ou mais letras, envolva-os em colchetes e preceda-os com um acento circunflexo (^), então s[^oi]mmy corresponderá a sammy e sxmmy, mas não sommy ou simmy
  • Para definir um curinga que inclui 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 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 que são ú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