Redis frente a Memcached: elección del motor adecuado
Compare Redis (persistencia, replicación, conjuntos ordenados y pub/sub) con Memcached (simplicidad y multiprocesamiento) y elija según los requisitos del caso de uso
Redis frente a Memcached: elección del motor adecuado es una lección gratuita de AWS Solutions Architect en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AWS Solutions Architect, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AWS Solutions Architect incluye 4 lecciones en total.
¿Qué es Amazon ElastiCache?
Amazon ElastiCache es un servicio de almacenamiento en caché en memoria totalmente administrado que facilita la implementación, administración y escalabilidad en la nube de almacenes de datos en memoria populares y de código abierto. Admite dos motores: Redis y Memcached. Al servir los datos solicitados con frecuencia desde la memoria en lugar de hacerlo desde una base de datos, ElastiCache puede reducir la carga de la base de datos en varios órdenes de magnitud y disminuir la latencia de respuesta de milisegundos a microsegundos. Elegir entre Redis y Memcached es una pregunta habitual del examen SAA-C03.
Memcached: simplicidad absoluta
Memcached es un almacén distribuido de clave-valor en memoria, centrado en la simplicidad y la escalabilidad horizontal. Sus características principales son: multihilo (puede utilizar todos los núcleos de CPU de un solo nodo), almacenamiento simple de clave-valor (solo cadenas, sin estructuras de datos complejas), sin persistencia (los datos se pierden cuando se reinicia un nodo), sin replicación (no hay nodos en espera ni réplicas) y sharding horizontal mediante hashing consistente del lado del cliente. Memcached es la opción adecuada cuando necesita una caché sencilla y de gran escala, y no necesita persistencia, tipos de datos complejos ni alta disponibilidad.
# Create a Memcached cluster with 3 nodes
aws elasticache create-cache-cluster \
--cache-cluster-id my-memcached \
--engine memcached \
--cache-node-type cache.r7g.large \
--num-cache-nodes 3 \
--cache-subnet-group-name my-subnet-group
# Memcached auto-discovers nodes via the config endpoint
# Application connects to: my-memcached.cfg.use1.cache.amazonaws.com:11211Redis: almacén en memoria con numerosas funciones
Redis (Remote Dictionary Server) es un almacén de estructuras de datos en memoria, de un solo hilo (por instancia) y con numerosas funciones. Admite cadenas, hashes, listas, conjuntos, conjuntos ordenados, mapas de bits, HyperLogLogs, streams e índices geoespaciales. Sus principales ventajas frente a Memcached son: persistencia opcional (instantáneas AOF y RDB), replicación (réplicas de lectura y conmutación por error automática), mensajería pub/sub, scripts de Lua, transacciones (MULTI/EXEC) y modo de clúster para el sharding horizontal. Redis es la opción adecuada para la mayoría de los escenarios reales de almacenamiento en caché.
# Redis data structure examples
# String
# SET user:1:name 'Alice'
# GET user:1:name
# Hash (object-like)
# HSET product:42 name 'Widget' price '9.99' stock '100'
# HGETALL product:42
# Sorted set (leaderboard)
# ZADD leaderboard 9500 'alice' 8700 'bob' 9100 'carol'
# ZREVRANGE leaderboard 0 2 WITHSCORES
# Pub/Sub
# PUBLISH notifications 'order_shipped:12345'
# SUBSCRIBE notificationsPersistencia de Redis: AOF y RDB
Redis admite dos mecanismos de persistencia: RDB (Redis Database): instantáneas periódicas en un momento determinado que se guardan en disco a intervalos configurables (reinicios rápidos, pero se pueden perder los datos generados entre instantáneas). AOF (Append-Only File): registra todas las operaciones de escritura; al reiniciarse, Redis reproduce el registro para reconstruir el estado (durabilidad a cambio de archivos más grandes y reinicios más lentos). En ElastiCache, puede habilitar AOF para conservar los datos entre reinicios de nodos. Esto es fundamental cuando ElastiCache se utiliza no solo como caché, sino también como almacén de datos principal, por ejemplo, para datos de sesión.
# Create an ElastiCache Redis cluster with AOF enabled
aws elasticache create-replication-group \
--replication-group-id my-redis \
--replication-group-description 'Redis with persistence' \
--cache-node-type cache.r7g.large \
--engine redis \
--num-cache-clusters 2 \
--cache-parameter-group-name default.redis7 \
--snapshot-retention-limit 5
# Note: Enable AOF via parameter group: appendonly=yesReplicación y conmutación por error automática de Redis
Redis admite grupos de replicación con un nodo principal que gestiona todas las escrituras y hasta 5 réplicas de lectura que gestionan las lecturas. Con Multi-AZ y la conmutación por error automática habilitados, ElastiCache promueve automáticamente una réplica de lectura a principal cuando el principal falla; normalmente, la conmutación por error se completa en menos de 60 segundos. Esto proporciona a las aplicaciones respaldadas por Redis una alta disponibilidad que Memcached no puede igualar (Memcached no tiene replicación). Para aplicaciones de producción que requieren almacenamiento en caché de alta disponibilidad, utilice siempre Redis con conmutación por error automática.
# Create a Redis replication group with Multi-AZ failover
aws elasticache create-replication-group \
--replication-group-id prod-redis \
--description 'Production Redis with HA' \
--cache-node-type cache.r7g.xlarge \
--engine redis \
--multi-az-enabled \
--automatic-failover-enabled \
--num-cache-clusters 3 \
--cache-subnet-group-name multi-az-subnet-group
# 1 primary + 2 replicas across 3 AZsConjuntos ordenados de Redis para tablas de clasificación
Los conjuntos ordenados son una de las estructuras de datos más potentes de Redis. Cada miembro tiene una puntuación de coma flotante asociada y los miembros se mantienen siempre ordenados. Esto hace que los conjuntos ordenados sean ideales para tablas de clasificación (clasificación por puntuación), colas de prioridad (procesamiento primero de los trabajos de mayor prioridad) y limitación de velocidad (ventana deslizante con marcas de tiempo como puntuaciones). Las operaciones ZADD, ZRANGE, ZREVRANGE, ZRANK y ZRANGEBYSCORE son todas O(log n), lo que resulta extremadamente eficiente incluso para millones de entradas.
# Leaderboard operations using Redis sorted sets
# Add/update scores
# ZADD game:leaderboard 10500 'player:alice'
# ZADD game:leaderboard 9800 'player:bob'
# ZADD game:leaderboard 11200 'player:carol'
# Get top 3 players (highest scores first)
# ZREVRANGE game:leaderboard 0 2 WITHSCORES
# Result: carol 11200, alice 10500, bob 9800
# Get a player's rank (0-indexed)
# ZREVRANK game:leaderboard 'player:alice'
# Result: 1 (second place)Pub/Sub de Redis para mensajería
El pub/sub de Redis permite a los publicadores difundir mensajes a canales sin saber quién está suscrito. Los suscriptores reciben en tiempo real todos los mensajes publicados en los canales a los que están suscritos. Los mensajes de pub/sub no se conservan: si un suscriptor está desconectado, pierde el mensaje. Para obtener mensajería persistente con entrega garantizada, utilice Redis Streams (una estructura de datos más robusta añadida en Redis 5) o un servicio de mensajería especializado como SQS o SNS. Para el examen SAA-C03, pub/sub de Redis es una opción para notificaciones ligeras en tiempo real entre servicios.
# Publisher side (broadcasts to 'notifications' channel)
# PUBLISH notifications '{"type":"order_shipped","orderId":"12345"}'
# Subscriber side (listens for messages)
# SUBSCRIBE notifications
# Pattern subscribe (wildcard channel matching)
# PSUBSCRIBE order:*
# Receives messages from: order:created, order:shipped, order:delivered
# Note: Unlike SQS, pub/sub is fire-and-forget — no acknowledgementMemcached frente a Redis: tabla de decisión
Utilice este marco para elegir en el examen SAA-C03: elija Memcached cuando necesite una caché sencilla sin requisitos de alta disponibilidad, rendimiento multihilo y escalabilidad horizontal mediante la adición de nodos (caché pura). Elija Redis cuando necesite: persistencia (almacén de sesiones), replicación y conmutación por error (alta disponibilidad), tipos de datos complejos (conjuntos ordenados para tablas de clasificación, conjuntos y listas), pub/sub, transacciones de Lua o Cluster Mode para la escalabilidad horizontal con varios fragmentos. Si la pregunta del examen menciona alguna función que vaya más allá del almacenamiento en caché simple de clave-valor, casi siempre la respuesta es Redis.
Tipos y familias de nodos de caché
ElastiCache ofrece varias familias de tipos de nodo: r7g (Graviton 3, optimizada para memoria: mejor relación calidad-precio y recomendada para la mayoría de los casos de almacenamiento en caché), m7g (cómputo y memoria equilibrados) y t4g (de rendimiento ampliable y bajo coste para desarrollo y pruebas). Los tamaños de nodo van desde cache.t4g.micro (500 MB) hasta cache.r7g.16xlarge (425 GB). En producción, elija un tamaño de nodo que mantenga el conjunto de datos en memoria con un margen adicional del 20-25 %. Quedarse sin memoria provoca expulsiones en Memcached o errores OOM en Redis.
# Get available cache node types
aws elasticache describe-cache-engine-versions \
--engine redis \
--query 'CacheEngineVersions[?contains(EngineVersion, '7')].{Engine:Engine,Version:EngineVersion}'
# Check memory and vCPU for a node type
aws elasticache describe-cache-engine-versions \
--cache-parameter-group-family redis7
# Monitor evictions to detect memory pressure
# CloudWatch: Evictions metric > 0 means cache is fullSeguridad de ElastiCache
ElastiCache se implementa dentro de su VPC, con grupos de seguridad que controlan el acceso; de forma predeterminada, no hay acceso a través de Internet pública. Para Redis, habilite tokens de AUTH (una contraseña que los clientes deben proporcionar) y cifrado en tránsito (TLS) para las conexiones, además del cifrado en reposo mediante KMS. Para Memcached, solo está disponible el cifrado TLS en tránsito (no admite cifrado en reposo ni AUTH). Al migrar de Redis sin cifrado a Redis cifrado, no existe una migración local: debe crear un clúster cifrado nuevo y precargarlo.
# Create a Redis cluster with TLS and AUTH token
aws elasticache create-replication-group \
--replication-group-id secure-redis \
--description 'Encrypted Redis' \
--cache-node-type cache.r7g.large \
--engine redis \
--transit-encryption-enabled \
--at-rest-encryption-enabled \
--auth-token 'MySecretPassword123!'
# Store the AUTH token in Secrets Manager, not in your app codePolíticas de expulsión
Cuando una caché de Redis o Memcached está llena, la política de expulsión determina qué claves se eliminan para liberar espacio. Entre las políticas habituales de expulsión de Redis se incluyen: noeviction (devuelve un error OOM; es adecuada cuando la caché es el almacén principal), allkeys-lru (expulsa las claves menos utilizadas recientemente entre todas las claves; es adecuada como caché de uso general), volatile-lru (aplica LRU a las claves que tienen TTL; conserva las claves que no caducan), allkeys-random (expulsión aleatoria) y allkeys-lfu (menos utilizadas con frecuencia). Para los casos de uso habituales de almacenamiento en caché, se recomiendan allkeys-lru o allkeys-lfu.
# Set eviction policy via parameter group
aws elasticache create-cache-parameter-group \
--cache-parameter-group-name redis7-lru \
--cache-parameter-group-family redis7 \
--description 'LRU eviction policy'
aws elasticache modify-cache-parameter-group \
--cache-parameter-group-name redis7-lru \
--parameter-name-values ParameterName=maxmemory-policy,ParameterValue=allkeys-lru
# Apply the parameter group to your cluster:
aws elasticache modify-replication-group \
--replication-group-id prod-redis \
--cache-parameter-group-name redis7-lruComprobación rápida
Compruebe su comprensión de los conceptos de AWS Solutions Architect (SAA-C03) de esta lección.
Resumen de la lección
En esta lección ha aprendido que Memcached es sencillo, multihilo y no ofrece alta disponibilidad, por lo que es ideal para la escalabilidad horizontal pura de cachés sencillas; Redis admite estructuras de datos complejas, persistencia, pub/sub y conmutación por error Multi-AZ, por lo que es la mejor opción para la mayoría de los escenarios de almacenamiento en caché de producción; y los conjuntos ordenados hacen de Redis la opción natural para tablas de clasificación y colas de prioridad. A continuación, exploraremos los grupos de replicación de Redis y Cluster Mode para el sharding horizontal.
Aprende AWS Solutions Architect con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Redis frente a Memcached: elección del motor adecuado» es gratis?
Sí — el texto completo de «Redis frente a Memcached: elección del motor adecuado» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AWS Solutions Architect, actualiza a CoddyKit PRO. El curso de AWS Solutions Architect incluye 4 lecciones en total.
¿Qué aprenderé en «Redis frente a Memcached: elección del motor adecuado»?
Compare Redis (persistencia, replicación, conjuntos ordenados y pub/sub) con Memcached (simplicidad y multiprocesamiento) y elija según los requisitos del caso de uso Practicas AWS Solutions Architect con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AWS Solutions Architect?
No se requiere experiencia previa. AWS Solutions Architect en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Redis frente a Memcached: elección del motor adecuado»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AWS Solutions Architect?
Sí. Cada lección de AWS Solutions Architect incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Redis frente a Memcached: elección del motor adecuado
- Grupos de replicación y modo de clúster de ElastiCache Redis
- Estrategias de almacenamiento en caché: carga diferida y escritura simultánea
- Almacenamiento de sesiones y patrones de tablas de clasificación