Quiz: Evaluación de Conceptos Básicos de Redis

Quiz
10 min~4 min lectura

Quiz Interactivo

Pon a prueba tus conocimientos

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:

  1. Instalación: sudo apt-get install redis-server
  2. Configuración básica en /etc/redis/redis.conf:
    • maxmemory 1gb - límite de memoria
    • maxmemory-policy allkeys-lru - política de evicción
    • bind 127.0.0.1 - seguridad básica
  3. 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:

ComponenteUso de RedisConfiguración
Cache de productosAlmacenar páginas de productos por 10 minutosmaxmemory 2gb, allkeys-lru
Sesiones de usuarioCarritos de compra y preferenciasTTL de 30 días, replicación
Cola de pedidosProcesamiento asíncronoListas con BRPOP

Errores comunes

  • No configurar límites de memoria: Redis puede consumir toda la RAM del servidor. Solución: siempre definir maxmemory y maxmemory-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

  1. Puedo configurar Redis con límites de memoria y políticas de evicción
  2. Sé implementar cache con patrones como cache-aside o write-through
  3. Puedo gestionar sesiones distribuidas con expiración automática
  4. Sé implementar colas de trabajos con PUB/SUB o listas
  5. Puedo monitorear Redis con INFO y comandos como MEMORY USAGE
  6. Sé implementar replicación básica para alta disponibilidad
  7. 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.

  1. Crea un servidor Redis local o usa un contenedor Docker: docker run -p 6379:6379 redis:alpine
  2. Implementa un endpoint GET /products/:id que:
    • 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
  3. Implementa un endpoint POST /orders que:
    • Valide los datos del pedido
    • Encole el pedido en una lista Redis llamada orders_queue
    • Retorne un ID de pedido inmediatamente
  4. Crea un worker que:
    • Use BRPOP para consumir pedidos de la cola
    • Simule procesamiento (log a consola)
    • Maneje errores sin perder el pedido
  5. 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.