Estrategia de eliminación de memoria Redis y estrategia de eliminación de vencimiento

Redis almacena datos en la memoria. La memoria es limitada y algunos escenarios comerciales necesitan configurar los datos para que caduquen, por lo que existe una estrategia de eliminación de caducidad y una estrategia de eliminación de memoria.

Estrategia de eliminación de vencimiento de Redis

  • Eliminación programada
  • borrado perezoso
  • eliminar regularmente
Proceso específico amabilidad de la memoria compatibilidad con la CPU Hay un problema
Eliminación programada Cree un temporizador mientras configura la clave para que caduque, verifique regularmente si caduca y elimínelo si caduca amigable antipático Alta presión en la CPU, que afecta las operaciones del usuario
borrado perezoso Solo cuando se obtiene la clave cada vez, se juzga si está caducada y, si está caducada, se elimina. antipático amigable Si algunas teclas no se han utilizado siempre ocuparán memoria
eliminar regularmente Juzgue de forma regular y aleatoria el tiempo de caducidad de una determinada proporción de claves y elimínelas si caducan en el centro en el centro Debido a que juzga y elimina aleatoriamente una cierta proporción de claves, es amigable con la memoria y la CPU. Sin embargo, debido a la posibilidad de aleatoriedad, en casos extremos, algunas claves no se eliminarán debido a la caducidad y no se escanearán. En respuesta a esta situación, la estrategia para lidiar con ella es utilizar la eliminación perezosa + eliminación regular al mismo tiempo.

La principal diferencia entre el tiempo y la periodicidad que se menciona aquí es: el tiempo escaneará todas las claves y las eliminará si caducan; mientras que la periodicidad no escaneará todas las claves, sino que solo eliminará algunas de ellas.

A través de la comparación de estas tres estrategias de eliminación, la combinación de eliminación perezosa + eliminación regular puede evitar hasta cierto punto la ocupación de memoria no válida, pero es imposible evitarla por completo. Supongamos: si alguna clave no ha sido escaneada o utilizada, escapará de la eliminación regular y perezosa para que la memoria no se libere, de esta manera, debemos establecer una estrategia de eliminación.

Cuando el uso de la memoria redis alcance la memoria máxima que configuramos, la memoria se limpiará de acuerdo con la estrategia de eliminación. La estrategia de eliminación tiene los siguientes ocho tipos:

  1. noeviction Cuando la memoria no es suficiente para contener los datos escritos, la nueva operación de escritura informará un error.
  2. allkeys-lru elimina la clave utilizada menos recientemente cuando no hay suficiente memoria para almacenar los datos escritos.
  3. allkeys-random Cuando la memoria no es suficiente para almacenar los datos escritos, elimine una clave al azar.
  4. volatile-lru Cuando la memoria no es suficiente para contener los datos escritos, elimine la clave utilizada menos recientemente con el tiempo de caducidad establecido.
  5. volatile-random Cuando la memoria no es suficiente para almacenar los datos escritos, extraiga aleatoriamente la clave con el tiempo de caducidad establecido.
  6. volatile-ttl Cuando la memoria no es suficiente para contener los datos escritos, la clave con el tiempo de caducidad anterior se eliminará primero.
  7. allkeys-lfu (Redis 4.0 y superior), para todas las claves, elimine primero la clave menos utilizada;
  8. volatile-lfu (Redis 4.0 y superior), para claves con fecha de caducidad, elimine primero la clave menos utilizada.

Hay dos puntos a explicar:

  • Por lo general, no se recomienda utilizar estrategias de eliminación relacionadas con el azar, y algunos datos faltan inexplicablemente, lo que genera confusión. Pero no hay un absoluto, debe combinarse con escenarios comerciales.
  • Si no se establece un tiempo de caducidad, el comportamiento de volatile-lru/volatile-random/volatile-ttl es similar a noeviction.

Supongo que te gusta

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