0Pricing
Redis Caching & Messaging (Pub/Sub, Streams) · Lección

Prevención de avalanchas de caché y del efecto manada

Aprenda qué es una avalancha de caché, por qué sobrecarga la base de datos cuando expira una clave popular y qué técnicas de bloqueo y actualización mantienen seguro su backend bajo carga.

Prevención de avalanchas de caché y del efecto manada es una lección gratuita de Redis Caching & Messaging (Pub/Sub, Streams) en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Redis Caching & Messaging (Pub/Sub, Streams), y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Redis Caching & Messaging (Pub/Sub, Streams) incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

What Is a Cache Stampede?

A cache stampede (or thundering herd) happens when a popular cached key expires and many requests miss the cache at the same moment. They all rush to the database to rebuild the value, overwhelming it.

Why It Is So Dangerous

Under high traffic, hundreds or thousands of concurrent misses can hit the database in milliseconds. The backend that normally serves zero load for that key suddenly takes the full firehose, causing latency spikes or outages.

The Naive Cache-Aside Flow

The basic pattern reads the cache, and on a miss queries the DB and stores the result. Every concurrent miss runs this DB query — that is the vulnerability.

Solution 1: A Recompute Lock

Let only the first missing request rebuild the value while others wait or serve stale. Redis SET NX grants a short-lived lock to exactly one client.

SET lock:product:42 "1" NX EX 10

How the Lock Flow Works

On a miss:

  • Try to acquire the lock with SET NX
  • If you got it, query the DB and repopulate the cache
  • If not, briefly wait and re-read the cache

Only one DB query runs per expiry.

Solution 2: Stale-While-Revalidate

Store the value with a logical expiry earlier than its physical TTL. When the logical time passes, serve the stale value immediately and refresh it in the background, so users never wait on a miss.

Solution 3: Early Probabilistic Expiry

Each request, with a small growing probability as expiry nears, voluntarily refreshes the key before it dies. This spreads recomputation across time so the herd never forms.

Adding Jitter to TTLs

If many keys are written together (e.g. on deploy) they expire together, causing a synchronized stampede. Add random jitter to each TTL so expiries spread out.

SET product:42 "..." EX 305
SET product:43 "..." EX 318

Releasing the Lock Safely

After rebuilding, delete the lock. Give it a short TTL too, so a crashed worker does not hold it forever and block refreshes.

DEL lock:product:42

Choosing a Strategy

Guidelines:

  • Lock: simplest, briefly delays some requests
  • Stale-while-revalidate: best UX, needs background refresh
  • Probabilistic + jitter: smooths load, no waiting

Combine them for very hot keys.

Negative Caching

A related danger is the cache penetration miss: many requests for a key that does not exist in the DB always miss the cache and hammer the backend. Cache the not-found result briefly too, so repeated lookups are absorbed.

SET product:9999 "__NULL__" EX 30

Quick Check

Test your stampede-prevention knowledge.

Recap

You learned to stop cache stampedes:

  • A stampede floods the DB when a hot key expires
  • A SET NX recompute lock limits rebuilds to one client
  • Stale-while-revalidate serves old data while refreshing
  • Probabilistic early expiry spreads recomputation out
  • TTL jitter prevents synchronized mass expiry

Preguntas frecuentes

¿La lección «Prevención de avalanchas de caché y del efecto manada» es gratis?

Sí — el texto completo de «Prevención de avalanchas de caché y del efecto manada» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Redis Caching & Messaging (Pub/Sub, Streams), actualiza a CoddyKit PRO. El curso de Redis Caching & Messaging (Pub/Sub, Streams) incluye 4 lecciones en total.

¿Qué aprenderé en «Prevención de avalanchas de caché y del efecto manada»?

Aprenda qué es una avalancha de caché, por qué sobrecarga la base de datos cuando expira una clave popular y qué técnicas de bloqueo y actualización mantienen seguro su backend bajo carga. Practicas Redis Caching & Messaging (Pub/Sub, Streams) con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Redis Caching & Messaging (Pub/Sub, Streams)?

No se requiere experiencia previa. Redis Caching & Messaging (Pub/Sub, Streams) en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Prevención de avalanchas de caché y del efecto manada»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Redis Caching & Messaging (Pub/Sub, Streams)?

Sí. Cada lección de Redis Caching & Messaging (Pub/Sub, Streams) incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. ¿Por qué usar una caché? Introducción al almacenamiento en caché
  2. Implementación de patrones básicos de caché
  3. Expulsión y expiración de la caché
  4. Prevención de avalanchas de caché y del efecto manada
← Volver a Redis Caching & Messaging (Pub/Sub, Streams)