Casos de uso de Redis: Caché, Colas y Rate Limiting

Backend2026-10-04TryQuickToolBox

Has construido una aplicación web que está ganando tracción, pero ahora cada carga de página golpea la base de datos, los trabajos en segundo plano se acumulan y algunos usuarios están saturando tu API. Necesitas un almacén de datos en memoria rápido para manejar estos desafíos. Redis es la solución ideal para caché, colas y rate limiting. En este artículo, exploraremos estos tres casos de uso principales con ejemplos prácticos y mejores prácticas.

¿Por qué Redis para Caché, Colas y Rate Limiting?

Redis es un almacén de clave-valor en memoria conocido por su velocidad y versatilidad. Admite estructuras de datos ricas como cadenas, listas, conjuntos, conjuntos ordenados y hashes, lo que lo hace ideal para diversas tareas. Sus operaciones atómicas y capacidades de pub/sub amplían aún más su utilidad. Ya sea que estés reduciendo la carga de la base de datos, desacoplando servicios o protegiendo APIs, Redis ofrece un conjunto de herramientas simple pero poderoso.

1. Caché con Redis

El caché es el caso de uso más común de Redis. Al almacenar datos de acceso frecuente en memoria, reduces la latencia y la carga de la base de datos. La característica TTL (tiempo de vida) de Redis expira automáticamente los datos obsoletos.

Cómo implementar el caché

  1. Verifica el caché: Antes de consultar la base de datos, verifica si los datos existen en Redis.
  2. En caso de fallo de caché: Obtén los datos de la base de datos y almacena el resultado en Redis con un tiempo de expiración.
  3. En caso de acierto de caché: Devuelve los datos almacenados en caché directamente.

Aquí tienes un ejemplo en Python usando redis-py:

import redis
import json

r = redis.Redis(host='localhost', port=6379, db=0)

def get_user(user_id):
    cache_key = f"user:{user_id}"
    cached = r.get(cache_key)
    if cached:
        return json.loads(cached)
    # Simular obtención de DB
    user = fetch_user_from_db(user_id)
    r.setex(cache_key, 3600, json.dumps(user))  # Caché por 1 hora
    return user

Mejores prácticas para el caché

2. Colas con Redis

Las listas y conjuntos ordenados de Redis permiten colas de mensajes simples pero robustas. Son perfectas para trabajos en segundo plano, colas de tareas y procesamiento de eventos. A diferencia de los brokers de mensajes dedicados, las colas de Redis son ligeras y fáciles de configurar.

Implementación de una cola básica

Usa LPUSH para agregar trabajos y BRPOP para consumirlos de manera bloqueante:

# Productor
r.lpush('job_queue', json.dumps({'task': 'send_email', 'to': 'user@example.com'}))

# Consumidor
while True:
    _, job = r.brpop('job_queue', timeout=30)
    if job:
        process_job(json.loads(job))

Colas avanzadas con conjuntos ordenados

Para trabajos retrasados o colas de prioridad, usa conjuntos ordenados con marcas de tiempo como puntuaciones. Los consumidores obtienen trabajos con puntuaciones