Repaso
English
Diseño de sistemasIntermedioSD-04

En el patrón cache-aside (lazy loading), ¿quién llena la caché?

Opciones

  1. La propia base de datos llena la caché
  2. La app: si hay un miss, lee la base de datos y guarda en caché (Opción correcta)
  3. Un batch nocturno que precarga todas las claves
  4. La CDN llena la caché en cada petición

Respuesta

La aplicación: si hay un miss, lee la base de datos y luego escribe el valor en la caché

Por qué

Pasos de cache-aside: 1) la app pregunta a la caché; 2) si está (hit), lo usa; 3) si no (miss), lee de la base de datos y guarda el resultado en la caché con un TTL (tiempo de caducidad).

Solo se guardan en caché los datos que realmente se piden.

Desventajas: la primera petición es lenta, y los datos en caché pueden quedar desactualizados hasta que caduquen o los elimines al actualizar.

def get_user(uid):
    user = cache.get(f"user:{uid}")
    if user is None:                       # miss
        user = db.load_user(uid)
        cache.set(f"user:{uid}", user, ttl=300)
    return user

Recuerda

Cache-aside: mira la caché → si falla, carga de la BD → guarda en caché.

Términos clave

Practica esta pregunta en Repaso