Almacenamiento en caché en Redis en la práctica: estrategias e invalidación
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í →