Quando uma instância Tair (compatível com Redis OSS) atinge o limite de memória, ela aciona uma política de remoção para manter o uso dentro do limite configurado. A política padrão varia conforme o tipo de instância:
volatile-lru: padrão para instâncias Tair baseadas em DRAM e instâncias Redis Open-Source Edition
noeviction: padrão para instâncias Tair otimizadas para memória persistente
Instâncias baseadas em ESSD/SSD não oferecem suporte à remoção de dados.
Políticas de remoção
A tabela a seguir descreve todas as políticas de remoção disponíveis. As políticas com o prefixo volatile- atuam apenas sobre chaves que possuem um tempo de vida (TTL) definido; já as políticas com o prefixo allkeys- atuam sobre todas as chaves, independentemente do TTL.
|
Política |
Comportamento |
Cenário recomendado |
|
volatile-lru (padrão para instâncias DRAM e Redis Open-Source Edition) |
Remove as chaves menos recentemente usadas (LRU) dentre aquelas que possuem TTL, mesmo que ainda não tenham expirado. |
Ideal quando a maioria das chaves em cache tem TTL e você precisa manter os dados acessados mais recentemente na memória. |
|
noeviction (padrão para instâncias otimizadas para memória persistente) |
Retorna erros nas operações de escrita quando a memória está cheia; nenhuma chave é removida. |
Indicado quando a perda de qualquer chave é inaceitável e erros explícitos de escrita são preferíveis à perda silenciosa de dados. |
|
volatile-lfu |
Remove as chaves menos frequentemente usadas (LFU) dentre as que possuem TTL. |
Adequado quando a frequência de acesso indica melhor o valor da chave do que a recência. |
|
volatile-random |
Remove aleatoriamente chaves que possuem TTL. |
Recomendado quando as chaves com TTL apresentam frequência de acesso aproximadamente igual. |
|
volatile-ttl |
Prioriza a remoção das chaves com TTL que têm o menor tempo restante de vida útil. |
Projetado para cenários em que a aplicação atribui intencionalmente TTLs curtos a chaves menos importantes. |
|
allkeys-lru |
Remove as chaves LRU considerando todo o conjunto de chaves. |
Mais indicado quando um subconjunto de chaves é acessado com muito mais frequência que o restante — um padrão comum sob o princípio de Pareto. Trata-se de uma boa política de cache para uso geral. |
|
allkeys-lfu |
Remove as chaves LFU considerando todo o conjunto de chaves. |
Use quando a frequência de acesso for um sinal de cache mais confiável que a recência. |
|
allkeys-random |
Remove qualquer chave de forma aleatória. |
Aplicável quando todas as chaves são acessadas com frequência semelhante. |
Alterar a política de remoção
Faça login no console do Tair.
Na página Parameter Settings da instância desejada, defina
maxmemory-policycomo a política pretendida.
Para obter a lista completa de parâmetros configuráveis, consulte Configure parâmetros da instância.
Perguntas frequentes
Por que chaves com tempo de expiração são excluídas antes de expirarem?
Verifique se a memória da instância está cheia. Quando a memória se esgota, a remoção começa imediatamente. Sob a política padrão volatile-lru, as chaves com TTL são as primeiras candidatas à remoção e podem ser excluídas muito antes da expiração natural. Para evitar essa remoção prematura, aumente a capacidade de memória da instância. Para mais detalhes, consulte Alterar as configurações de uma instância.
Referências
Se as chaves desaparecerem, mas a memória da instância não estiver cheia, a causa provável é a expiração das chaves, e não a remoção por falta de memória. Para saber como o Tair (compatível com Redis OSS) lida com chaves expiradas e como limpá-las manualmente, consulte Limpar chaves expiradas no Tair.