Base de datos compatible con Redis - Almacén de datos en memoria de alto rendimiento con Amazon MemoryDB y ElastiCache

Construye almacenes de datos en memoria de alto rendimiento con MemoryDB (durabilidad) y ElastiCache (caché). Explicamos la selección entre ambos, el diseño de clústeres y los patrones de uso.

MemoryDB vs ElastiCache - Selección del servicio adecuado

AWS ofrece dos servicios compatibles con Redis: MemoryDB for Redis y ElastiCache for Redis. MemoryDB es una base de datos en memoria durable que persiste todos los datos con replicación Multi-AZ y transaction log, proporcionando durabilidad de base de datos con rendimiento de microsegundos. ElastiCache es un servicio de caché en memoria diseñado para acelerar aplicaciones reduciendo la carga en bases de datos primarias. La diferencia fundamental es la durabilidad: MemoryDB garantiza que los datos no se pierden tras un reinicio o failover, mientras que ElastiCache puede perder datos recientes en caso de fallo del nodo. Se elige MemoryDB cuando Redis es la base de datos primaria, y ElastiCache cuando Redis es caché frente a otra base de datos.

Diseño de clústeres y replicación

Ambos servicios soportan clústeres con sharding (particionamiento de datos entre nodos) y replicación (copias de lectura por shard). El sharding distribuye las claves entre slots de hash (16,384 slots), permitiendo escalar horizontalmente añadiendo shards. Cada shard tiene un nodo primario y hasta 5 réplicas de lectura. MemoryDB replica de forma síncrona al transaction log Multi-AZ antes de confirmar la escritura, garantizando durabilidad. ElastiCache replica de forma asíncrona, priorizando latencia sobre durabilidad. El failover automático promueve una réplica a primaria en segundos cuando se detecta un fallo del nodo primario.

Patrones de uso y estructuras de datos

Redis soporta estructuras de datos ricas: strings, hashes, lists, sets, sorted sets, streams, bitmaps y HyperLogLog. Los patrones comunes incluyen: sesiones de usuario (hash con TTL), leaderboards en tiempo real (sorted set), colas de mensajes (list o stream), contadores (INCR atómico), caché de consultas (string con TTL), rate limiting (INCR con EXPIRE) y pub/sub para mensajería en tiempo real. MemoryDB es ideal para microservicios que necesitan estado compartido durable con latencia de microsegundos. ElastiCache es ideal para cachear resultados de consultas SQL, respuestas de API y sesiones web.

Rendimiento y escalabilidad

Ambos servicios proporcionan latencia de lectura de microsegundos (sub-milisegundo). MemoryDB tiene latencia de escritura ligeramente mayor (milisegundos de un solo dígito) debido a la replicación síncrona al transaction log. ElastiCache proporciona latencia de escritura de microsegundos. El throughput escala linealmente con el número de shards y réplicas. Un clúster puede manejar millones de operaciones por segundo. El escalado online permite añadir o eliminar shards sin downtime, redistribuyendo automáticamente los slots de hash. Para profundizar en bases de datos en memoria, consulte libros relacionados en Amazon.

Precios

MemoryDB se cobra por nodo-hora según el tipo de instancia (desde 0.016 dólares/hora para db.t4g.small) más almacenamiento de datos (0.20 dólares/GB/mes). ElastiCache se cobra por nodo-hora (desde 0.017 dólares/hora para cache.t4g.micro). Ambos ofrecen Reserved Nodes con descuentos de hasta 55% con compromisos de 1 o 3 años. ElastiCache Serverless cobra por ECPU (ElastiCache Processing Unit) y almacenamiento, eliminando la necesidad de seleccionar tipos de instancia.

Resumen

AWS ofrece dos servicios compatibles con Redis para diferentes necesidades. MemoryDB proporciona una base de datos en memoria durable con rendimiento de microsegundos, ideal como base de datos primaria para microservicios. ElastiCache proporciona caché en memoria de ultra baja latencia, ideal para acelerar aplicaciones reduciendo carga en bases de datos. Ambos soportan clústeres con sharding y replicación, escalando a millones de operaciones por segundo.