Lección 4 de 21 · Lectura y práctica
Quiz: Evaluación de Conceptos Básicos de Redis
Tipo de lección: QuizConcepto claveRedis es un almacén de estructuras de datos en memoria que funciona como base de datos NoSQL, cache, broker de mensajes y cola de trabajos. Su principal ventaja en producción es la velocidad: al.
Del concepto a la práctica
Taller de esta lección
La decisión central de esta evaluación es asociar cada necesidad con una garantía. Un catálogo repetido puede ser cache; una sesión necesita recuperar estado por identificador; Pub/Sub sirve para receptores conectados; una cola requiere conservar trabajos pendientes. La velocidad por sí sola no determina la elección.
Ejemplo resuelto
Para producto:7, sesion:abc y cola:emails, la clasificación es respectivamente string temporal, hash o JSON de sesión, y lista de trabajos. Si producto:7 tiene TTL 120 y sesion:abc TTL 900, no son intercambiables: su caducidad responde a políticas distintas.
Para notificación durable escoge una estructura/cola con reconocimiento y recuperación de pendientes; una lista BRPOP simple pierde el trabajo retirado si muere el consumidor. Persistencia RDB/AOF determina qué sobrevive al reinicio de Redis; no confundas reiniciar el proceso web con perder la base Redis. Una cache puede reconstruirse de la fuente, pero perder una sesión requiere un flujo de autenticación/carrito definido.
Pruébalo
Clasifica una notificación que no debe perderse si el receptor está desconectado.
Elige entre cache y fuente principal para guardar el precio definitivo.
Decide qué estructura representa cinco trabajos pendientes.
Anota la consecuencia de reiniciar Redis en cada caso.
Comprueba tu resultado
Error frecuente: llamar “cola” a Pub/Sub porque ambos transmiten mensajes. Corrige recordando que Pub/Sub no conserva mensajes para suscriptores ausentes. Resultado esperado: la notificación durable se encola o persiste en otro sistema; el precio definitivo queda en la fuente principal; los trabajos se representan como elementos pendientes.

Mapa de prácticaUna condición decide qué camino ejecuta el programa. Un bucle repite una operación mientras queden elementos, y termina cuando la lista se agota. Separar ambas ideas ayuda a seguir el flujo y comprobar casos límite.
Ver la infografía en tamaño completo ↗Tipo de lección: Quiz
Concepto clave
Redis es un almacén de estructuras de datos en memoria que funciona como base de datos NoSQL, cache, broker de mensajes y cola de trabajos. Su principal ventaja en producción es la velocidad: al mantener los datos en RAM, ofrece latencias de microsegundos para operaciones de lectura y escritura.
Para un Backend Engineer, Redis resuelve tres problemas críticos: cache (almacenamiento temporal de resultados costosos), sesiones (gestión de estado de usuario distribuido) y queues (procesamiento asíncrono de tareas). Imagina un restaurante de comida rápida: el cache es como tener las hamburguesas más pedidas ya preparadas, las sesiones son la memoria del camarero sobre tu pedido actual, y las colas son la lista de pedidos en la cocina esperando ser procesados.
Cómo funciona en la práctica
Veamos un ejemplo paso a paso de configuración de Redis para cache en una aplicación web:
- Instalación:
sudo apt-get install redis-server - Configuración básica en
/etc/redis/redis.conf:maxmemory 1gb- límite de memoriamaxmemory-policy allkeys-lru- política de evicciónbind 127.0.0.1- seguridad básica
- En tu aplicación (ejemplo Python con redis-py):
import redis import json # Conexión r = redis.Redis(host='localhost', port=6379, db=0) # Cache de consulta de usuario def get_user_profile(user_id): cache_key = f"user:{user_id}:profile" cached = r.get(cache_key) if cached: return json.loads(cached) # Consulta costosa a base de datos profile = database.query_user(user_id) # Almacenar en cache por 5 minutos r.setex(cache_key, 300, json.dumps(profile)) return profile
Caso de estudio
E-commerce con alto tráfico: Una plataforma que maneja 10,000 peticiones por segundo necesita reducir la carga de su base de datos principal.
"Implementamos Redis como cache de productos, reduciendo la latencia de 200ms a 2ms y bajando la carga de la base de datos en un 70%." - CTO de la empresa
Solución implementada:
| Componente | Uso de Redis | Configuración |
|---|---|---|
| Cache de productos | Almacenar páginas de productos por 10 minutos | maxmemory 2gb, allkeys-lru |
| Sesiones de usuario | Carritos de compra y preferencias | TTL de 30 días, replicación |
| Cola de pedidos | Procesamiento asíncrono | Listas con BRPOP |
Errores comunes
- No configurar límites de memoria: Redis puede consumir toda la RAM del servidor. Solución: siempre definir
maxmemoryymaxmemory-policy. - Usar Redis como base de datos principal: Los datos en memoria son volátiles. Solución: usar Redis solo para datos que puedas recrear o perder.
- No manejar fallos de conexión: En producción, Redis puede fallar. Solución: implementar circuit breakers y reintentos con backoff exponencial.
- Serialización ineficiente: Usar formatos pesados como XML. Solución: preferir JSON, MessagePack o protocol buffers.
- Olvidar TTLs: Datos de cache que nunca expiran. Solución: siempre definir tiempos de expiración apropiados al uso.
Checklist de dominio
- Puedo configurar Redis con límites de memoria y políticas de evicción
- Sé implementar cache con patrones como cache-aside o write-through
- Puedo gestionar sesiones distribuidas con expiración automática
- Sé implementar colas de trabajos con PUB/SUB o listas
- Puedo monitorear Redis con INFO y comandos como MEMORY USAGE
- Sé implementar replicación básica para alta disponibilidad
- Puedo manejar fallos de Redis en mi aplicación
Implementación de cache y cola en una API REST
Vas a implementar un sistema de cache para consultas de productos y una cola para procesamiento de pedidos en una API REST simulada.
- Crea un servidor Redis local o usa un contenedor Docker:
docker run -p 6379:6379 redis:alpine - Implementa un endpoint
GET /products/:idque:- Primero busque en Redis con clave
product:{id} - Si no existe, simule una consulta costosa (sleep de 100ms)
- Almacene el resultado en Redis con TTL de 60 segundos
- Retorne el producto en formato JSON
- Primero busque en Redis con clave
- Implementa un endpoint
POST /ordersque:- Valide los datos del pedido
- Encole el pedido en una lista Redis llamada
orders_queue - Retorne un ID de pedido inmediatamente
- Crea un worker que:
- Use
BRPOPpara consumir pedidos de la cola - Simule procesamiento (log a consola)
- Maneje errores sin perder el pedido
- Use
- Prueba el sistema con 10 peticiones concurrentes al endpoint de productos
Pistas
- Usa redis-py o la librería equivalente en tu lenguaje
- Para el worker, considera usar un proceso separado o hilo
- Implementa logging para ver el flujo de cache hits/misses
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.
Sigue con Redis en Producción: Cache, Sesiones y Colas para Backend Engineers
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.