Bases de datos

Almacenamiento en caché en Redis en la práctica: estrategias e invalidación

Ruslan Ismailov Publicado 9 min de lectura
A

La caché es un acelerador, no una fuente de verdad

El principio principal: el sistema debe seguir siendo correcto incluso cuando la caché se vacía por completo. Si los datos existen solo en la caché, ya no es una caché, sino un almacén poco fiable.

Elegimos un patrón

Lo más habitual es que usemos cache-aside: la aplicación primero mira en la caché, ante un fallo lee de la base de datos y vuelve a colocar el resultado. Para los datos que requieren frescura es adecuado write-through, cuando la escritura va tanto a la base de datos como a la caché.

A qué prestar atención

  • Claves y espacios de nombres con sentido.
  • TTL razonables según la naturaleza de los datos.
  • Etiquetas para la invalidación en grupo de los registros relacionados.

Luchamos contra la estampida de caché

Cuando una clave popular expira, decenas de solicitudes se lanzan a recalcularla a la vez, sobrecargando la base de datos. Lo resolvemos con un bloqueo de recálculo y una actualización anticipada de la caché antes de que expire el TTL.

La invalidación es la parte más difícil

Vinculamos la invalidación a los eventos de dominio: cuando una entidad cambia, se vacían exactamente las claves relacionadas con ella. Esto es más fiable que depender solo del TTL y evita mostrar datos obsoletos.

Conclusiones

Un almacenamiento en caché correcto en Redis quita la carga principal de la base de datos y estabiliza la latencia, pero requiere disciplina en la elección del patrón y una invalidación bien pensada.

Tecnologías

Etiquetas

Ruslan Ismailov

Desarrollador Senior Web / Backend. Desarrollador senior web/backend con 9 años de experiencia. Stack: PHP, Laravel, PostgreSQL, Redis, Docker, Kubernetes, REST, microservicios, CI/CD. Más sobre mí →