Estratégia de eliminação de memória Redis e estratégia de exclusão de expiração

O Redis armazena dados na memória. A memória é limitada e alguns cenários de negócios precisam definir dados para expirar, portanto, há uma estratégia de exclusão de expiração e uma estratégia de eliminação de memória.

Estratégia de exclusão de expiração do Redis

  • Exclusão programada
  • exclusão preguiçosa
  • excluir regularmente
Processo específico facilidade de memória compatibilidade com CPU Há um problema
Exclusão programada Crie um cronômetro ao definir a chave para expirar, verifique regularmente se ela expira e exclua-a se expirar amigável hostil Alta pressão na CPU, afetando as operações do usuário
exclusão preguiçosa Somente quando a chave é obtida todas as vezes, é julgado se expirou e, se expirou, é excluído hostil amigável Se algumas teclas não forem usadas sempre ocuparão memória
excluir regularmente Julgue regular e aleatoriamente o tempo de expiração de uma certa proporção de chaves e exclua-as se expirarem no centro no centro Como julga e exclui aleatoriamente uma certa proporção de chaves, é amigável à memória e à CPU. No entanto, devido à possibilidade de aleatoriedade, em casos extremos, algumas chaves não serão excluídas devido à expiração e não serão verificadas. Em resposta a essa situação, a estratégia para lidar com isso é usar a exclusão preguiçosa + a exclusão regular ao mesmo tempo.

A principal diferença entre tempo e periodicidade mencionada aqui é: o tempo irá verificar todas as chaves e excluí-las se elas expirarem; enquanto a periodicidade não fará a varredura de todas as chaves, mas apenas excluirá algumas delas.

Através da comparação dessas três estratégias de exclusão, a combinação de exclusão preguiçosa + exclusão regular pode evitar a ocupação inválida da memória até certo ponto, mas é impossível evitá-la completamente. Suponha que: se alguma chave não foi escaneada ou usada, ela escapará da exclusão regular e preguiçosa para que a memória não seja liberada. Dessa forma, precisamos definir uma estratégia de eliminação.

Quando o uso da memória redis atingir o máximo de memória que definimos, a memória será limpa de acordo com a estratégia de eliminação. A estratégia de eliminação tem os oito tipos a seguir:

  1. noeviction Quando a memória não for suficiente para armazenar os dados gravados, a nova operação de gravação relatará um erro.
  2. allkeys-lru remove a chave usada menos recentemente quando não há memória suficiente para armazenar os dados gravados.
  3. allkeys-random Quando a memória não for suficiente para armazenar os dados gravados, remova uma chave aleatoriamente.
  4. volátil-lru Quando a memória não for suficiente para armazenar os dados gravados, remova a chave usada menos recentemente com o tempo de expiração definido.
  5. volátil-aleatório Quando a memória não for suficiente para armazenar os dados gravados, remova aleatoriamente a chave com o tempo de expiração definido.
  6. volátil-ttl Quando a memória não for suficiente para armazenar os dados gravados, a chave com o tempo de expiração anterior será removida primeiro.
  7. allkeys-lfu (Redis 4.0 e superior), para todas as chaves, exclua primeiro a chave menos usada;
  8. volátil-lfu (Redis 4.0 e superior), para chaves com tempo de expiração, exclua primeiro a chave menos usada.

Há dois pontos a explicar:

  • Geralmente não é recomendado usar estratégias de eliminação relacionadas ao acaso, e alguns dados estão inexplicavelmente ausentes, causando confusão. Mas não há absoluto, precisa ser combinado com cenários de negócios.
  • Se nenhum tempo de expiração for definido, o comportamento de volátil-lru/volátil-aleatório/volátil-ttl será semelhante a noeviction.

Acho que você gosta

Origin blog.csdn.net/qq_44113347/article/details/131501697
Recomendado
Clasificación