Amazon ElastiCache
Servicio de caché en memoria completamente administrado que ofrece Redis o Memcached, logrando tiempos de respuesta de microsegundos
Descripción general
Amazon ElastiCache es un servicio de caché en memoria completamente administrado compatible con dos motores de código abierto: Redis y Memcached. Proporciona almacenamiento de datos en memoria con latencia de microsegundos, siendo ideal para cacheo de sesiones, cacheo de consultas de bases de datos, tablas de clasificación en tiempo real y colas de mensajes. Gestiona automáticamente el aprovisionamiento de hardware, la aplicación de parches, los backups y la detección de fallos con failover automático.
Redis y Memcached - La elección se define por la necesidad de estructuras de datos
La elección entre Redis y Memcached depende fundamentalmente de si se necesitan estructuras de datos avanzadas. Redis ofrece Strings, Hashes, Lists, Sets, Sorted Sets, Streams, HyperLogLog y funciones Lua, además de persistencia, replicación y transacciones. Memcached es un almacén clave-valor simple y multi-threaded, optimizado para cacheo puro con el menor overhead posible. Redis es la elección correcta cuando se necesitan: tablas de clasificación (Sorted Sets), contadores atómicos, pub/sub, datos geoespaciales, o persistencia de datos. Memcached es preferible cuando: solo se necesita cacheo simple de objetos, se requiere escalado horizontal con múltiples nodos sin replicación, o se busca el menor consumo de memoria por clave. En la práctica, Redis es la opción más popular por su versatilidad, y Memcached se reserva para casos específicos donde su modelo multi-threaded ofrece mejor throughput para patrones de acceso simples.
Estrategias de caché: Lazy Loading y Write-Through
Lazy Loading (también llamado cache-aside) carga datos en la caché solo cuando se solicitan: la aplicación consulta la caché primero, y si hay un miss, consulta la base de datos y almacena el resultado en la caché. Ventaja: solo se cachean datos realmente solicitados. Desventaja: el primer acceso siempre tiene latencia adicional (cache miss). Write-Through escribe en la caché cada vez que se actualiza la base de datos: la aplicación escribe simultáneamente en la base de datos y en la caché. Ventaja: la caché siempre está actualizada. Desventaja: se cachean datos que quizás nunca se lean, y las escrituras tienen latencia adicional. La estrategia óptima combina ambas: Write-Through para datos que se leen frecuentemente después de escribirse (perfiles de usuario, configuraciones), y Lazy Loading con TTL para datos de lectura intensiva que toleran cierta obsolescencia (resultados de búsqueda, feeds de contenido).
Modo clúster y Global Datastore
ElastiCache for Redis ofrece modo clúster para escalar horizontalmente más allá de los límites de un solo nodo. En modo clúster, los datos se distribuyen en múltiples shards (hasta 500), cada uno con un nodo primario y hasta 5 réplicas de lectura. El particionamiento se realiza mediante hash slots (16.384 slots distribuidos entre los shards). El modo clúster es necesario cuando el dataset excede la memoria de un solo nodo o cuando se necesita mayor throughput de escritura. Global Datastore permite replicación entre regiones con latencia típica menor a 1 segundo, proporcionando recuperación ante desastres entre regiones y lecturas locales para aplicaciones globales. El failover entre regiones se puede activar manualmente o automatizar con Route 53 health checks. Para dimensionamiento, se recomienda que la utilización de memoria no supere el 75% para dejar margen para picos y operaciones de mantenimiento como backups y failovers.