← Volver al catálogo

Amazon ElastiCache

En una frase: Caché en memoria compatible con Redis, Valkey o Memcached para acelerar lecturas

Qué es

Amazon ElastiCache es un almacén de datos en memoria totalmente gestionado, compatible con Valkey, Redis OSS (Open Source Software: la versión de código abierto) y Memcached. Se coloca delante de una base de datos o de un cálculo costoso para servir los datos frecuentes en microsegundos, o se usa directamente como almacén rápido de sesiones, colas o clasificaciones. Puedes crearlo sin servidor (ElastiCache Serverless, que escala solo) o como clúster de nodos que dimensionas tú.

Conceptos clave

  • Valkey / Redis OSS: estructuras de datos ricas (hashes, listas, conjuntos ordenados, streams), persistencia con instantáneas, replicación, Multi-AZ con conmutación automática, pub/sub y transacciones. Valkey es la bifurcación de código abierto de Redis que AWS promueve y resulta más barata.
  • Memcached: caché simple de clave-valor, multihilo, sin replicación ni persistencia. Si un nodo cae, sus datos se pierden.
  • Modo clúster (Valkey/Redis OSS): reparte los datos en varios shards, cada uno con una primaria y hasta 5 réplicas, para escalar escrituras y memoria. Sin modo clúster hay un único shard.
  • Serverless: sin elegir tipos de nodo; escala según la demanda y guarda los datos de forma redundante en varias zonas sin configurar nada.
  • Patrones de caché:
    • Lazy loading (cache-aside): la aplicación consulta la caché; si falla, lee la base de datos y guarda el resultado. Solo se cachea lo que se pide, pero el primer acceso es lento y los datos pueden quedar obsoletos.
    • Write-through: al escribir en la base de datos también se actualiza la caché. Datos siempre frescos, a costa de cachear cosas que quizá nadie lea.
    • TTL (Time To Live: tiempo de vida antes de caducar): caducidad de las claves para limitar datos obsoletos y memoria.
  • Global Datastore (Valkey/Redis OSS): réplicas en otras regiones para lecturas locales y recuperación ante desastres.

Casos de uso típicos

  • Cachear resultados de consultas a RDS (Relational Database Service) o Aurora y reducir su carga.
  • Guardar sesiones de usuario para que las instancias web no tengan estado.
  • Clasificaciones de juegos con conjuntos ordenados.
  • Limitación de peticiones (rate limiting) y contadores.
  • Caché semántica de respuestas de modelos de IA (inteligencia artificial) generativa, con búsqueda vectorial en Valkey.

Cuándo NO usarlo

  • Como almacén principal y duradero de datos críticos: una base de datos (o MemoryDB, que es duradera y compatible con Valkey/Redis OSS).
  • Para acelerar solo lecturas de DynamoDB sin cambiar el código: DAX (DynamoDB Accelerator: caché en memoria para DynamoDB).
  • Para contenido estático en el borde, cerca del usuario: CloudFront.

Valkey/Redis OSS frente a Memcached

NecesidadValkey / Redis OSSMemcached
Alta disponibilidad y réplicasSí (Multi-AZ, conmutación automática)No
Persistencia y copiasSí (instantáneas)No
Estructuras de datos complejasSíSolo cadenas
Pub/sub, transaccionesSíNo
Multihilo, caché simple—Sí

Modelo de precios

En Serverless se paga por los datos almacenados (GB-hora) y por las unidades de procesamiento consumidas (ECPU). En clústeres de nodos, por hora de cada nodo según su tipo, con nodos reservados de 1 o 3 años. Aparte, las copias de seguridad y la transferencia de datos entre zonas o regiones. Valkey tiene un precio menor que Redis OSS.

Seguridad y alta disponibilidad

  • Solo accesible dentro de la VPC (Virtual Private Cloud), con security groups.
  • Cifrado en tránsito (TLS) y en reposo con KMS (Key Management Service); autenticación con usuarios y RBAC (Role-Based Access Control: permisos según el rol), AUTH o IAM (Identity and Access Management) en Valkey/Redis OSS.
  • Multi-AZ con réplicas en otras zonas y conmutación automática (siempre activa en modo clúster).
  • Serverless reparte los datos en varias zonas automáticamente.
  • Global Datastore para desastres regionales.

Trampas de examen

  • "Reducir la carga de lectura de RDS" con datos consultados a menudo: ElastiCache (o réplicas de lectura si no se puede tocar el código).
  • "Sesiones compartidas entre instancias": ElastiCache (o DynamoDB).
  • "Alta disponibilidad, persistencia o estructuras complejas": Valkey/Redis OSS, no Memcached.
  • "Caché simple y multihilo": Memcached.
  • "Los datos de la caché quedan obsoletos": TTL o write-through.
  • "Microsegundos en DynamoDB sin cambiar el código": DAX, no ElastiCache.
  • "Clasificación en tiempo real": conjuntos ordenados de Valkey/Redis OSS.

Preguntas de práctica

Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.

Fuentes