Todos os produtos
Search
Central de documentação

Tair (Redis® OSS-Compatible):Chaves grandes e chaves quentes

Última atualização: Jun 26, 2026

Chaves grandes e quentes podem degradar o desempenho do serviço, causar tempo limite em requisições ou até provocar falhas no sistema. Este tópico descreve como localizar e otimizar rapidamente essas chaves. Também analisa suas causas e efeitos, além de fornecer medidas preventivas para reduzir o impacto nos seus negócios.

Etapa 1: Localize rapidamente chaves grandes e quentes

Ferramentas do console Alibaba Cloud

Tair e Redis oferecem os recursos Top Key Statistics e Offline Full Key Analysis no console para ajudar você a identificar rapidamente chaves grandes e quentes.

Método

Limites

Descrição

Procedimento

Top Key Statistics (Recomendado)

Este recurso é compatível apenas com o Redis Open-Source Edition 5,0 ou posterior e com instâncias otimizadas para memória e memória persistente do Tair (Enterprise Edition).

  • Exibe informações em tempo real sobre as três principais chaves grandes e quentes de cada estrutura de dados em cada shard.

  • Permite visualizar o histórico de chaves grandes e quentes dos últimos quatro dias.

  1. Faça login no console e acesse a página Instances. Na barra de navegação superior, selecione a região da instância que deseja gerenciar. Em seguida, localize a instância e clique em ID correspondente.

  2. No painel de navegação à esquerda, clique em CloudDBA > Top Key Statistics ou Offline Key Analysis.

Offline Full Key Analysis

Este recurso não é compatível com instâncias baseadas em disco.

  • Executa uma análise personalizada do arquivo de backup RDB para obter informações como uso de memória, distribuição e tempo de expiração das chaves.

  • A análise não ocorre em tempo real e pode ser demorada para arquivos RDB grandes.

  • Não analisa informações de chaves quentes.

Caso sua instância não seja compatível com esses recursos, utilize os métodos a seguir.

Outros métodos para localizar chaves grandes e quentes

Método

Vantagens e desvantagens

Descrição

Use os parâmetros bigkeys, memkeys e hotkeys do redis-cli

  • Vantagens: Prático, rápido e seguro.

  • Desvantagens: Os resultados da análise não são personalizáveis e podem ter baixa precisão ou atualidade. Este método percorre todas as chaves da instância, o que pode afetar o desempenho.

Os parâmetros bigkeys, memkeys e hotkeys do redis-cli recuperam estatísticas gerais de chaves e a principal chave grande ou quente de cada estrutura de dados.

As diferenças são:

  • bigkeys: Estatísticas para chaves grandes. Para coleções ou listas, retorna o número de elementos.

  • memkeys: Estatísticas para chaves grandes. Retorna o tamanho de memória ocupado pelo valor da chave.

  • hotkeys: Estatísticas para chaves quentes.

Estruturas de dados compatíveis: STRING, LIST, HASH, SET, ZSET e STREAM.

Por exemplo, o comando para bigkeys é redis-cli -h r-*.redis.rds.aliyuncs.com -a <password> --bigkeys.

Analise chaves-alvo usando comandos integrados

  • Vantagens: Impacto mínimo nos serviços online.

  • Desvantagens: O comprimento serializado retornado de uma chave não corresponde ao seu comprimento real na memória. Portanto, o resultado não é preciso e deve servir apenas como referência.

Para chaves de diferentes estruturas de dados, use os seguintes comandos de baixo risco para determinar se são chaves grandes.

  • Tipo STRING: O comando STRLEN retorna o número de bytes do valor da chave correspondente.

  • Tipo LIST: O comando LLEN retorna o comprimento da lista da chave correspondente.

  • Tipo HASH: O comando HLEN retorna o número de membros da chave correspondente.

  • Tipo SET: O comando SCARD retorna o número de membros da chave correspondente.

  • Tipo ZSET: O comando ZCARD retorna o número de membros da chave correspondente.

  • Tipo STREAM: O comando XLEN retorna o número de membros da chave correspondente.

Nota

Os comandos DEBUG OBJECT e MEMORY USAGE consomem muitos recursos e têm complexidade de tempo O(N). Eles podem bloquear a instância; portanto, não são recomendados.

Identifique chaves quentes na camada de aplicação

  • Vantagens: Localiza chaves quentes com precisão e rapidez.

  • Desvantagens: Aumenta a complexidade do código da aplicação e pode degradar levemente o desempenho.

Adicione código na camada de aplicação para registrar acessos à instância e realizar análises assíncronas.

Use a ferramenta redis-rdb-tools para análise personalizada de chaves grandes

  • Vantagens: Suporta análise personalizada sem impacto nos serviços online.

  • Desvantagens: A análise não ocorre em tempo real e pode ser demorada para arquivos RDB grandes.

O Redis-rdb-tools é uma ferramenta open-source escrita em Python que suporta análise personalizada de arquivos de snapshot RDB. Após baixar o arquivo RDB, analise o uso de memória de todas as chaves na instância e execute consultas flexíveis conforme necessário.

Encontre chaves quentes usando o comando MONITOR

  • Vantagens: Prático e seguro.

  • Desvantagens: Consome recursos de CPU, memória e rede. Os resultados podem não ser oportunos ou precisos.

O comando MONITOR imprime todas as requisições enviadas à instância, incluindo horário, informações do cliente, comandos e detalhes das chaves.

Em situações de emergência, execute brevemente o comando MONITOR e salve a saída em um arquivo. Após interromper o comando MONITOR, analise as requisições no arquivo para identificar chaves quentes durante aquele período.

Nota

Como o comando MONITOR pode degradar significativamente o desempenho da instância, não o utilize exceto em circunstâncias especiais.

Etapa 2: Otimize chaves grandes e quentes

Chaves grandes

Solução

Cenários

Ações recomendadas

Limpar dados expirados

Acúmulo de grande volume de dados expirados, como dados incrementais não limpos em um HASH.

Utilize o comando HSCAN combinado com o comando HDEL para limpar dados inválidos. Isso evita o bloqueio da instância, que pode ocorrer ao limpar uma grande quantidade de dados de uma só vez.

Comprimir chaves grandes

Dados compressíveis, como texto JSON e XML, incluindo logs e configurações.

  • Ative a compactação durante a serialização, usando GZIP ou Snappy, por exemplo.

  • Adote um protocolo de serialização binária, como Protocol Buffers.

Nota

As operações de compactação e descompactação consomem recursos extras de CPU e podem afetar o desempenho do processamento.

Dividir chaves grandes

Estruturas de dados como HASH e ZSET acessadas frequentemente, como tabelas de classificação.

  • Divida as chaves com base na lógica de negócios, por ID de usuário ou intervalo de tempo.

  • Implemente um design de chave de sharding, como user:1001:shard1 e user:1001:shard2.

A divisão de chaves grandes previne eficazmente a distorção de dados.

Descarregar chaves grandes

Arquivos grandes ou Binary Large Objects (BLOBs) do tipo String.

Armazene dados inadequados em outros sistemas de armazenamento, como o OSS, e exclua-os da instância.

  • Para o Redis Open-Source Edition 4,0 e posterior: Use o comando UNLINK para excluir com segurança chaves grandes ou até extra-grandes. Este comando limpa as chaves de forma assíncrona para evitar o bloqueio da thread principal.

  • Para versões anteriores ao Redis Open-Source Edition 4,0: Utilize o comando SCAN para percorrer e excluir dados em lotes. Isso evita o bloqueio da thread principal causado pela exclusão de muitas chaves simultaneamente.

Chaves quentes

Solução

Cenários

Ações recomendadas

Replicar chaves quentes em arquitetura cluster

Uma chave quente é armazenada integralmente em um único shard, e as requisições não podem ser distribuídas migrando dados parciais.

Copie a chave quente e migre as réplicas para outros shards de dados. Por exemplo, copie uma chave quente chamada foo para criar três chaves idênticas chamadas foo2, foo3 e foo4. Migre essas três chaves para outros shards de dados para aliviar a pressão sobre o único shard que contém a chave quente.

Nota

A desvantagem desta solução é a necessidade de modificar seu código para manter múltiplas réplicas, sendo difícil garantir a consistência de dados entre elas. Por exemplo, uma operação de atualização deve ser sincronizada em todas as réplicas. Utilize esta solução como medida temporária para mitigar problemas urgentes.

Ativar divisão de leitura e escrita

Cargas de trabalho com muitas leituras e poucas escritas

Se a carga de requisições de leitura permanecer alta após ativar este recurso, adicione mais nós somente leitura para aliviar ainda mais a carga.

Nota

Em cenários com volumes de requisição extremamente altos, a sincronização primária/secundária terá inevitavelmente latência, o que pode causar leitura de dados inconsistentes. Portanto, não ative a divisão de leitura e escrita em cenários com alta pressão de leitura e escrita e requisitos rigorosos de consistência de dados.

Etapa 3: Evite que chaves grandes e quentes afetem seus negócios

Causas de chaves grandes e quentes

No Tair e Redis, a unidade mínima para distribuição de dados é a chave. Uma única chave é armazenada em um shard de dados específico e não é dividida. Fatores como planejamento de negócios insuficiente, acúmulo de dados inválidos e aumentos repentinos no volume de acesso podem levar à geração de chaves grandes e quentes em uma instância. Os exemplos incluem:

Categoria

Causa

Chave grande

  • Uso do Tair e Redis em cenários inadequados, resultando em valores de chave excessivamente grandes. Por exemplo, usar uma chave do tipo String para armazenar dados de arquivos binários grandes.

  • Planejamento e design insuficientes antes da entrada em produção. Membros dentro das chaves não são divididos adequadamente, resultando em um número excessivo de membros em algumas chaves.

  • Falha na limpeza periódica de dados inválidos, causando aumento contínuo dos membros de chaves do tipo HASH.

  • Falha de código no lado consumidor de uma aplicação que usa chaves do tipo LIST, fazendo com que os membros da chave correspondente apenas aumentem.

Chave quente

  • Aumentos abruptos e inesperados no volume de acesso. Exemplos incluem um produto que viraliza repentinamente, uma notícia quente com tráfego disparado, um evento de streamer em canal ao vivo que gera muitos likes, ou uma batalha entre múltiplas guildas em um jogo envolvendo muitos jogadores em uma área específica.

Efeitos de chaves grandes e quentes

Categoria

Efeito

Chave grande

  • Torna a execução de comandos no cliente mais lenta.

  • Quando a memória da instância atinge o limite de maxmemory, pode causar bloqueio de operações, evicção de chaves importantes ou até mesmo um erro de falta de memória (OOM).

  • Em uma arquitetura cluster, o uso de memória de um shard de dados excede muito o dos outros, impedindo o uso equilibrado dos recursos de memória entre os shards.

  • A execução de requisições de leitura em uma chave grande pode saturar a largura de banda da rede da instância, tornando seus próprios serviços lentos e afetando serviços relacionados.

  • A exclusão de uma chave grande pode facilmente bloquear o banco de dados primário por um longo período, o que pode desencadear uma interrupção de sincronização ou um failover primário/secundário.

Chave quente

  • Consome uma grande quantidade de recursos de CPU e pode aumentar o uso da largura de banda da rede, afetando outras requisições e reduzindo o desempenho geral.

  • Em uma arquitetura cluster, causa distorção de acesso, onde um shard de dados é fortemente acessado enquanto outros ficam ociosos. Isso pode levar a problemas como esgotamento do limite de conexões desse shard e rejeição de novas requisições de conexão.

  • Em cenários de vendas relâmpago, o volume de requisições para a chave de estoque de um produto pode exceder a capacidade de processamento da instância, levando a vendas excessivas.

  • Se a pressão de requisições em uma chave quente exceder a capacidade da instância, pode facilmente causar uma quebra de cache. Isso significa que muitas requisições são direcionadas à camada de armazenamento backend, causando um pico no acesso ao armazenamento ou até mesmo uma falha, o que, por sua vez, afeta outros serviços.

Estratégias de prevenção

Estratégia

Descrição

Configurar monitoramento e alertas

Defina limiares de alerta razoáveis para métricas como uso de CPU, uso de memória e Conexões. Por exemplo, configure um alerta para quando o uso de memória exceder 70% ou quando a memória crescer mais de 20% em uma hora. Quando um alerta for acionado, siga as instruções nas Etapas 1 e 2 deste tópico para localizar e otimizar chaves grandes e quentes. Isso resolve o problema antes que ele afete seus negócios.

Usar o Tair (Enterprise Edition) para evitar a limpeza de dados inválidos

Para cenários que envolvem chaves grandes do tipo hash, o Tair (Enterprise Edition) fornece uma estrutura de dados aprimorada, o TairHash. Ele suporta a definição de tempo de expiração e versão para cada campo. Ao usar o TairHash corretamente, você reduz significativamente a carga operacional, simplifica a complexidade do código da aplicação e lida eficazmente com problemas causados por chaves grandes e quentes.