resources/views/pages/frontend/docs/redis-cache-sesiones.md
Última modificación: 24 Oct, 2026

Redis Total: Sesiones, Caché & Locks

Redis 7.0 es el componente de infraestructura de más alta criticidad en Mañuti. La plataforma descarta por completo los drivers basados en archivos (file) o bases de datos relacionales (database), delegando la totalidad del estado volátil a la memoria RAM.


1. Los Tres Vectores de Redis en Mañuti

flowchart LR
    REDIS["[Redis 7.0 (In-Memory Engine)]"]
    
    SESIONES["[1. Sesiones de Usuario]<br/>(520 Bytes / sesión)"]
    CACHE["[2. Almacén de Caché & Tags]<br/>(Catálogos y Config)"]
    BROKER["[3. Broker de Colas Horizon & Bus Pub/Sub Reverb]"]

    REDIS --> SESIONES
    REDIS --> CACHE
    REDIS --> BROKER

2. Gestión de Sesiones Ultraligeras

Al configurar SESSION_DRIVER=redis, las sesiones de usuario se resuelven en microsegundos, eliminando la latencia de I/O en disco que ralentiza las instalaciones convencionales de Laravel.

Métricas de Consumo

  • Peso promedio por sesión activa: 520 Bytes (0.52 KB).
  • Proyección de escalamiento: 10,000 sesiones concurrentes consumen únicamente ~5.2 MB de memoria RAM en Redis.

3. Bloqueos Atómicos (Atomic Locks)

Para evitar condiciones de carrera (Race Conditions) en tareas críticas distribuidas (tales como la ejecución del Planificador Atómico o la generación de reportes pesados), Mañuti utiliza semáforos en memoria:

use Illuminate\Support\Facades\Cache;

$lock = Cache::lock('procesando_reporte_anual', 120);

if ($lock->get()) {
    try {
        // Ejecución de la tarea pesada
    } finally {
        $lock->release();
    }
} else {
    return response()->json(['error' => 'El proceso ya se encuentra en ejecución en otro nodo.'], 429);
}

4. Agrupamiento con Tags (Caché Selectivo)

Redis soporta la invalidación quirúrgica mediante etiquetas, permitiendo purgar familias de datos sin destruir la caché global:

// Almacenar catálogo de clientes con etiqueta
Cache::tags(['catalogos', 'clientes'])->put('listado_vip', $clientes, 3600);

// Purgar únicamente la caché de catálogos sin tocar las sesiones ni la configuración
Cache::tags(['catalogos'])->flush();

Enlaces Relacionados

Edita este documento en >> redis-cache-sesiones.md
← Volver a la Landing Page