Hoy Redis tiene un único trabajo: ser el broker y result-backend de Celery — la cola donde esperan las tareas en segundo plano. No hay carrito de compra ni sesiones guardadas aquí: las sesiones son las de Django (en PostgreSQL), y no existe un módulo de carrito en el código.
¿Qué es?
Redis es un almacén de pares clave-valor en memoria. En este proyecto (config/celery.py, CELERY_BROKER_URL/CELERY_RESULT_BACKEND) cumple exactamente un rol: recibir las tareas que el backend encola (emitir un comprobante, procesar una foto) y guardar su resultado hasta que algo lo consulte.
Funciones principales (lo real, hoy)
Cola de Celery: cuando se registra un comprobante o se sube una foto, el backend encola la tarea aquí en vez de ejecutarla en el momento; el worker de Celery la toma de esta cola.
Resultado de las tareas: Celery guarda aquí el estado/resultado de cada tarea ejecutada.
Lo que NO hace hoy a diferencia de lo que suele hacer Redis
No guarda carrito de compra: no existe ese concepto en el modelo (la tienda pública no tiene checkout, ver Catálogo público).
No guarda sesiones: la sesión Django compartida (SSO con Documentation) usa el backend de sesiones por defecto de Django, respaldado en PostgreSQL.
No cachea el catálogo ni ninguna otra consulta: cada petición a /productos, /reportes/…, etc. va directo a Postgres.
No se usa para limitar tasa de peticiones ni para bloqueos distribuidos: no hay throttling ni locks basados en Redis en el código.
Limitaciones y restricciones
Volatilidad: si Redis se reinicia sin persistencia configurada, se pierden las tareas en cola o su resultado — como hoy solo se usa para Celery, el impacto es que una tarea encolada (p. ej. una emisión pendiente) podría perderse, no datos de negocio (esos están en Postgres).
Sin alta disponibilidad: es una única instancia (redis:7-alpine en Docker), sin Sentinel ni Cluster.
Propósito del componente
Desacoplar lo lento (emitir un comprobante, convertir una imagen) de la respuesta inmediata al usuario: el backend encola el trabajo aquí y responde al instante; Celery lo procesa aparte.
Stack
Redis 7 (alpine)Celery 5.5
Por qué: es la combinación estándar y más simple para colas de tareas en Django. Si en el futuro se necesitara caché de catálogo, sesiones en Redis, o limitación de tasa, este mismo servicio podría ampliar su uso — pero hoy no lo hace.
Redis no es un almacén permanente: la información de negocio vive siempre en PostgreSQL. Qué tareas concretas pasan por aquí está detallado en Tareas automáticas.