3. Redis#
Redis es un sistema de almacenamiento en memoria (in-memory database) basado en estructuras de datos llave-valor (key-value store).
Originalmente fue diseñado como un sistema extremadamente rápido para guardar y recuperar información en memoria RAM. Debido a su velocidad y simplicidad, Redis se utiliza ampliamente como:
Caché (cache)
Base de datos temporal
Sistema de sesiones
Broker de mensajes
Cola de tareas (message queue)
Sistema Pub/Sub
Almacenamiento distribuido
Redis almacena los datos principalmente en memoria RAM, por lo que las operaciones suelen ejecutarse en microsegundos o milisegundos.
Aunque Redis trabaja en memoria, también puede persistir los datos a disco.
3.1. Características principales#
Muy rápido
Arquitectura cliente-servidor
Basado en TCP/IP
Maneja múltiples tipos de datos
Ligero y fácil de instalar
Ideal para aplicaciones distribuidas
Redis utiliza un modelo de datos tipo:
llave -> valor
Por ejemplo:
usuario:100 -> "Mario"
contador -> 15
3.2. Instalación con Docker#
Podemos ejecutar Redis fácilmente utilizando Docker:
docker run --name redis-server -p 6379:6379 redis
Esto descarga la imagen oficial de Redis desde Docker Hub y ejecuta un
contenedor exponiendo el puerto 6379.
Para verificar que el contenedor está ejecutándose:
docker ps
3.3. Conectarse al cliente Redis#
Podemos abrir una terminal dentro del contenedor:
docker exec -it redis-server redis-cli
Esto abre el cliente interactivo de Redis:
127.0.0.1:6379>
3.4. Comandos básicos llave-valor#
Guardar un valor#
SET nombre "Mario"
Obtener un valor#
GET nombre
Resultado:
"Mario"
Eliminar una llave#
DEL nombre
Verificar si existe una llave#
EXISTS nombre
Incrementar un contador#
Redis puede utilizarse fácilmente para contadores:
SET visitas 0
INCR visitas
INCR visitas
Resultado:
2
Tiempo de expiración#
Las llaves pueden expirar automáticamente:
SET token "abc123"
EXPIRE token 60
La llave será eliminada después de 60 segundos.
También puede hacerse en una sola operación:
SETEX token 60 "abc123"
3.5. Listas y colas (Queues)#
Redis incluye estructuras tipo lista muy útiles para implementar colas de mensajes (message queues).
Una lista en Redis puede utilizarse como:
Cola FIFO
Cola de tareas
Sistema productor-consumidor
Buffer de mensajes
Agregar elementos al final de una lista#
RPUSH tareas "procesar imagen"
RPUSH tareas "enviar correo"
RPUSH tareas "generar reporte"
Ver elementos#
LRANGE tareas 0 -1
Resultado:
1) "procesar imagen"
2) "enviar correo"
3) "generar reporte"
Consumir mensajes de la cola#
LPOP tareas
Resultado:
"procesar imagen"
La lista ahora contiene:
1) "enviar correo"
2) "generar reporte"
Esto implementa naturalmente una cola FIFO.
Blocking Queue#
Redis permite esperar mensajes de manera bloqueante.
Esto es muy útil para sistemas distribuidos y workers.
Consumidor:
BLPOP tareas 0
El 0 significa esperar indefinidamente hasta que llegue un mensaje.
Productor:
RPUSH tareas "nuevo trabajo"
En cuanto aparece un mensaje, el consumidor lo recibe inmediatamente.
3.6. Arquitectura Producer-Consumer#
Redis es muy utilizado para implementar el patrón productor-consumidor.
Producer ---> Redis Queue ---> Worker/Consumer
Por ejemplo:
Un servidor web recibe peticiones
Las agrega a Redis
Workers independientes procesan las tareas
Esto desacopla los componentes y mejora la escalabilidad.
Ejemplo típico:
Generación de PDFs
Envío de correos
Procesamiento de imágenes
Inferencia de modelos de IA
Procesamiento distribuido
3.7. Persistencia#
Aunque Redis trabaja principalmente en memoria RAM, puede guardar datos en disco utilizando:
Snapshots (RDB)
Append Only File (AOF)
Esto permite recuperar información después de reiniciar el servidor.
3.8. Redis como Message Queue#
Redis es una excelente opción para colas ligeras y rápidas.
Ventajas:
Muy rápido
Fácil de usar
Baja latencia
Ideal para sistemas pequeños y medianos
Limitaciones:
No reemplaza completamente sistemas especializados como RabbitMQ o Kafka
Los mensajes pueden perderse dependiendo de la configuración
Menos garantías de entrega
Sin embargo, para muchos sistemas web y proyectos académicos, Redis es una solución extremadamente práctica y eficiente.