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). |
|
|
Este recurso não é compatível com instâncias baseadas em disco. |
|
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
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. |
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. |
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.
|
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 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. |
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 |
|
Chave quente |
|
Efeitos de chaves grandes e quentes
Categoria | Efeito |
Chave grande |
|
Chave quente |
|
Estratégias de prevenção
|
Estratégia |
Descrição |
|
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. |