Estrategia de caché con Redis: claves, TTL, invalidación y stampede

Diseña qué cachear en Redis y cómo: patrón por tipo de dato, nombres de claves, TTL con jitter, invalidación, protección contra stampede, política de memoria y código de ejemplo. Pensado para ChatGPT, Claude, Gemini y Microsoft Copilot. Incluye 4 variables personalizables y se copia gratis en un clic.

Avanzado · Código · Pendiente de revisión editorial

Prompt

Actúa como arquitecto backend especializado en rendimiento y en sistemas de caché con Redis.

Contexto:
- Aplicación y stack: {{aplicacion}}
- Datos candidatos a cachear y su patrón de lectura y escritura: {{datos}}
- Tolerancia a datos desactualizados: {{tolerancia}}
- Problema actual: {{problema}}

Entregables:
1. Qué cachear y qué no: tabla con cada dato, ratio lectura/escritura estimado (o [COMPLETAR] si no lo sé), coste de recalcularlo y decisión.
2. Patrón para cada dato (cache-aside, read-through, write-through o write-behind) y por qué.
3. Esquema de claves: convención de nombres, prefijo de versión para invalidar en bloque y cómo evitar claves sin límite de crecimiento.
4. TTL por tipo de dato, con jitter para que no caduquen todas a la vez.
5. Invalidación: qué eventos borran o actualizan cada clave, cómo evitar condiciones de carrera entre escritura en base de datos y en caché, y qué pasa si la invalidación falla.
6. Protección contra cache stampede: bloqueo con `SET NX` y expiración, refresco anticipado probabilístico o servir dato caducado mientras se recalcula.
7. Configuración de Redis: `maxmemory`, política de expulsión adecuada, serialización y tamaño máximo de valor.
8. Comportamiento si Redis no responde: timeouts cortos, fallback a la base de datos y protección para que esta no se sature.
9. Métricas que medir (tasa de aciertos, latencia, expulsiones, memoria) y un plan de despliegue gradual.
10. Código de ejemplo en mi stack para el caso principal, con la protección contra stampede incluida.

Restricciones:
- No des cifras de mejora inventadas; explica cómo medirlas antes y después.
- Si falta información sobre volumen o consistencia, pregúntame antes de recomendar.
- Avisa de los datos que nunca deberían cachearse de forma compartida (por ejemplo, datos personales de otro usuario).

Cómo usarlo

  1. Lista los endpoints o consultas más lentos o más llamados y cada cuánto cambian sus datos.
  2. Indica cuánto tiempo puede estar desactualizado cada dato sin causar problemas.
  3. Implanta primero la caché en un solo caso, mide la tasa de aciertos y amplía después.

Ejemplo de uso

App: tienda Laravel con PHP 8.3 · Datos: catálogo (cambia pocas veces al día) y stock (cambia cada minuto) · Problema: la página de categoría tarda 1,8 s en hora punta.

Resultado de ejemplo

1. Qué cachear

DatoLectura/escrituraDecisión
Catálogo por categoríaMuy alta / pocas al díaCache-aside, TTL ~10 min
StockAlta / cada minutoTTL 30 s o leer de MySQL
CarritoPor usuarioClave por usuario, nunca compartida
Precio en checkout—No cachear: siempre desde MySQL

10. Código: catálogo con protección contra estampida

public function productosDeCategoria(int $categoriaId): array
{
    $version = Cache::get('catalogo:version', 1);       // subirla invalida todo el catálogo
    $clave = "v{$version}:categoria:{$categoriaId}:productos";
    $ttl = 600 - random_int(0, 60);                      // jitter para no expirar todas a la vez

    if (($cacheado = Cache::get($clave)) !== null) {
        return $cacheado;
    }

    // Solo un proceso recalcula; el resto espera hasta 3 s
    return Cache::lock("lock:{$clave}", 10)->block(3, fn () =>
        Cache::remember($clave, $ttl, fn () => Product::query()
            ->where('category_id', $categoriaId)
            ->where('active', true)
            ->get(['id', 'name', 'slug', 'image'])
            ->toArray())
    );
}

Si block() lanza LockTimeoutException, sirve la última copia o consulta MySQL con un límite de concurrencia. Mide el hit rate y la latencia p95 de la página antes y después del despliegue…

Datos clave

Categoría
Programación y desarrollo · Arquitectura de software
Tipo de resultado
Código
Nivel
Avanzado
Pensado para
ChatGPT, Claude, Gemini y Microsoft Copilot
Verificado en
Pendiente de verificación editorial
Variables
Aplicación y stack, Datos y patrón de acceso, Tolerancia a datos antiguos y Problema actual
Idioma
Español
Precio
Gratis, sin registro
Actualizado
07/11/2026

Preguntas frecuentes

¿Qué es un cache stampede?

Ocurre cuando una clave muy usada caduca y cientos de peticiones intentan recalcularla a la vez, golpeando la base de datos. Se evita con un bloqueo para que solo una la regenere o refrescándola antes de que caduque.

¿Por qué añadir jitter al TTL?

Si muchas claves se crean a la vez con el mismo TTL, caducarán juntas y provocarán un pico de carga. Un pequeño margen aleatorio reparte esas expiraciones.

¿Qué política de expulsión elijo en Redis?

Si Redis se usa solo como caché, suele encajar allkeys-lru o allkeys-lfu. Si comparte instancia con datos que no deben perderse, como colas, conviene separarlos en otra instancia.

¿Para qué sirve este prompt?

Diseña qué cachear en Redis y cómo: patrón por tipo de dato, nombres de claves, TTL con jitter, invalidación, protección contra stampede, política de memoria y código de ejemplo.

¿Con qué herramientas de IA funciona?

Está pensado para ChatGPT, Claude, Gemini y Microsoft Copilot. Todavía no lo hemos verificado en estas herramientas, por lo que los resultados pueden variar entre ellas.

¿Cómo personalizo el prompt?

Pulsa «Personalizar» y rellena las variables (Aplicación y stack, Datos y patrón de acceso, Tolerancia a datos antiguos y Problema actual). El texto se actualiza al instante y después puedes copiarlo con un clic. Los valores se guardan solo en tu navegador.

¿Necesito experiencia para usarlo?

Es de nivel avanzado: está pensado para personas con experiencia en el tema que sepan evaluar y ajustar el resultado.

¿Este prompt es gratis?

Sí. Todos los prompts de HomeCasa Prompts son gratuitos, sin registro ni suscripción. Puedes usarlos también en proyectos profesionales.

¿Puedo fiarme del resultado de la IA?

Úsalo como un borrador de calidad: revisa siempre datos, cifras y afirmaciones importantes antes de publicarlos o tomar decisiones.

Prompts relacionados