Introducción a la penetración, avería y avalancha de caché de Redis

64f2d72019bd4d10a621914b2867b89c.jpgpenetración de caché

 

concepto

La penetración de caché se refiere a una solicitud por lotes que llega en un momento específico y accede a una clave que no está ni en el caché ni en la base de datos. En este momento, penetrará directamente en el caché y llegará a la base de datos, provocando así el riesgo de presión instantánea. duplicar la base de datos, lo que resulta en una disminución en la velocidad de respuesta o incluso un bloqueo;

solución

1. Resuelto por el filtro Bloom

Principio: coloque todas las claves que deben almacenarse en caché en el filtro Bloom a través del algoritmo hash y establezca el valor correspondiente al subíndice correspondiente en 1. De esta manera, cuando llegue la solicitud, primero vaya al filtro Bloom y encuentre que la clave correspondiente al índice es 1. Luego vaya al caché para obtener los datos y devolverlos directamente si es 0, evitando así la necesidad de consultar la base de datos.

 

Ventajas y desventajas: la capa inferior del filtro Bloom se implementa a través de bitMap de redis, que se basa en operaciones de bits, por lo que es altamente eficiente; sin embargo, la clave debe almacenarse en el filtro con anticipación, lo que aumenta considerablemente el costo inicial. costo; y el mapeo de la clave al índice se realiza a través del algoritmo hash, entonces inevitablemente ocurrirá el problema de la colisión hash;

 

2. Pasar clave nula

Principio: cuando llega una solicitud y el valor devuelto por la consulta de la base de datos está vacío, el valor nulo correspondiente también se almacena en redis, de modo que cuando se realiza la siguiente solicitud, ya hay datos en redis y no se enviarán a la base de datos nuevamente.

Ventajas y desventajas: la idea es clara y la operación es simple, pero en casos extremos habrá N claves que no están en la base de datos o en el caché, entonces esta implementación provocará demasiados datos basura en redis y desperdiciará espacio de memoria.

3. Mejorar el prejuicio

Principio: realice una verificación lógica y de permisos en la capa de interfaz antes de realizar la consulta y determine la legalidad de la clave tanto como sea posible.

Ventajas y desventajas: El costo de uso es bajo pero no es suficiente para evitar el riesgo de penetración de caché, por lo que se recomienda usarlo solo como una solución adicional.

Desglose de caché

concepto

El desglose del caché se refiere a una solicitud por lotes que llega en un momento específico para consultar un valor específico y acceder a una clave que no está en el caché pero que existe en la base de datos. En este momento, penetrará directamente en el caché y llegará a la base de datos, lo que provocará la base de datos para duplicar la presión instantánea y causar la respuesta. Riesgo de desaceleración o incluso falla, cabe señalar que el caché mencionado aquí no incluye dos significados. Uno es que no está en el caché en sí, y 20 está en el caché pero ha caducado (una pequeña cantidad de claves de hotspot han caducado).

solución

1. Establezca el tiempo de vencimiento de la clave para que sea aleatorio.

Principio: al configurar claves en lotes como redis, intente que el tiempo de vencimiento sea aleatorio para evitar la avería de la caché causada por la expiración de la clave del lote en un momento determinado.

Ventajas y desventajas: aunque resuelve el problema de avería causado por la caducidad de las claves por lotes al mismo tiempo en el caché, no resuelve el problema de avería causado por la clave que no existe en absoluto en el caché.

2. Resuelto por cerraduras distribuidas.

Principio: agregue un bloqueo distribuido al consultar la base de datos, de modo que solo una solicitud pueda acceder a la base de datos dentro de un cierto período de tiempo. Después de que el acceso sea exitoso, el valor consultado se almacenará en caché en redis, para que no haya fallas en el la próxima vez que se acceda.Ya;

Cabe señalar que para las empresas que no tienen solicitudes masivas, no es un gran problema agregar un bloqueo independiente, no es más que cambiar solo una solicitud a los datos al mismo tiempo a solo el número de clústeres. solicitudes a la base de datos al mismo tiempo, el problema no debería ser grande.

 

Ventajas y desventajas: ya sea que no esté en el caché o que la clave en el caché haya caducado, el uso del bloqueo puede resolver el problema de la falla del caché, pero aumenta el costo del bloqueo.

3. Configure la clave del punto de acceso para que nunca caduque

Principio: para resolver el problema de penetración causado por la caducidad del lote de claves de punto de acceso, configurar la clave para que nunca caduque puede resolver el problema.

Ventajas y desventajas: al igual que el primero, solo puede resolver la avería causada por la caducidad de la clave, pero no puede resolver la avería causada por la falta de clave en el caché, y la confirmación de las claves del punto de acceso también es una ciencia y no siempre está garantizada. que no se pierdan las teclas del punto de acceso configurado.

4. Implementar la clave en diferentes instancias.

Principio: para Redis implementado en clúster, implementar claves de punto de acceso por separado también puede evitar problemas de avería causados ​​por la caducidad.

Ventajas y desventajas: solo puede ser utilizado por clústeres y solo puede resolver el problema de avería causado por la caducidad de la clave, y no siempre garantiza que no se pierda la clave de punto de acceso configurada.

avalancha de caché

concepto

En comparación con la avería, la avalancha significa que hay una gran cantidad de claves caducadas o inexistentes en lugar de una o una pequeña cantidad, lo que hace que una gran cantidad de solicitudes caigan en la base de datos;

solución

1. Resuélvelo estableciendo el tiempo de vencimiento aleatoriamente

Al configurar la clave, agregue un tiempo de vencimiento aleatorio para minimizar la cantidad de claves vencidas al mismo tiempo;

2. Establecer el bloqueo

La clave se bloquea cuando se accede a la clave desde el caché. Cuando el caché no existe, se verifica en la base de datos. Después de verificar, se inserta en el caché y finalmente se libera el bloqueo. Si es una aplicación independiente , El bloqueo de la máquina virtual se agrega directamente. Si se implementa en un clúster, se requiere un bloqueo distribuido.

Supongo que te gusta

Origin blog.csdn.net/weixin_57763462/article/details/132912605
Recomendado
Clasificación