sql >> Base de Datos >  >> NoSQL >> Redis

cómo mantener el almacenamiento en caché actualizado

Dado que está utilizando un caché, debe tolerar el problema de inconsistencia de datos , es decir, en algún momento, los datos en caché son diferentes de los datos en la base de datos.

No necesita actualizar el valor en caché, cada vez que se cambia el valor. De lo contrario, todo el sistema de caché será muy complicado (p. ej., debe mantener una lista de claves que se han almacenado en caché), y también podría ser innecesario hacerlo (p. ej., la clave-valor podría usarse solo una vez, y no es necesario para actualizarlo más).

¿Cómo podemos actualizar los datos en caché y mantener el sistema de caché simple?

Normalmente, además de configurar o actualizar un par clave-valor en caché, también establecemos un TIMEOUT para cada tecla . Después de eso, el cliente puede obtener el par clave-valor del caché. Sin embargo, si una clave alcanza el tiempo de espera, el sistema de caché elimina el par clave-valor del caché. Esto se llama THE KEY HAS BEEN EXPIRED . La próxima vez, el cliente que intente obtener esa clave del caché no obtendrá nada. Esto se llama CACHE MISS . En este caso, el cliente debe obtener el par clave-valor de la base de datos y actualizarlo en caché con un nuevo tiempo de espera.

Si los datos se actualizaron en la base de datos, mientras que la clave NO caducó en el caché, el cliente obtendrá datos inconsistentes. Sin embargo, cuando la clave ha caducado, su valor se recuperará de la base de datos y algún cliente lo insertará en la memoria caché. Después de eso, otros clientes obtendrán datos actualizados hasta que los datos se hayan cambiado nuevamente.

¿Cómo configurar el tiempo de espera?

Normalmente, hay dos tipos de política de caducidad:

  1. Caduca en N segundos/minutos/horas...
  2. Caducan en algún momento futuro, p. caducan el 30/7/2017 a las 00:00:00

Un tiempo de espera prolongado puede reducir en gran medida la carga de la base de datos, mientras que los datos pueden estar desactualizados durante mucho tiempo. Un pequeño tiempo de espera puede mantener los datos actualizados tanto como sea posible, mientras que la base de datos tendrá una gran carga. Así que tienes que equilibrar el equilibrio al diseñar el tiempo de espera .

¿Cómo caducan las claves de Redis?

Redis tiene dos formas de caducar claves:

  1. Cuando el cliente intenta operar en una clave, Redis verifica si la clave ha alcanzado el tiempo de espera. Si es así, Redis elimina la clave y actúa como si la clave no existiera. De esta forma, Redis se asegura de que el cliente no obtenga datos caducados.
  2. Redis también tiene un subproceso de caducidad que muestra las claves con una frecuencia configurada. Si las claves alcanzan el tiempo de espera, Redis elimina estas claves. De esta forma, Redis puede acelerar el proceso de caducidad de la clave.