hefestoapicontainer

Redis

Hefesto usa Redis internamente para colas de workers, caché y rate limiting. También puedes usar Redis directamente desde tus directivas mediante las directivas RedisSet y RedisGet.

Guardar datos (RedisSet)

RedisSet::run($state, [
    'key' => 'user:345',
    'expire' => 86400,  // 1 día en segundos
    'value' => [
        'name' => 'Pepito',
        'age' => 45
    ]
]);

Parámetros:

Leer datos (RedisGet)

RedisGet::run($state, [
    'key' => 'user:345',
    'target' => 'userInfo'
]);
$userInfo = $state->memory()->get('userInfo');

Parámetros:

Si la clave no existe en Redis, la directiva no hace nada y el target en memory queda sin definir.

Uso compartido entre APIs

Por defecto, cada API tiene su propio espacio aislado en Redis. Para compartir datos entre APIs (por ejemplo, una sesión de autenticación), usa el parámetro global a true tanto al guardar como al leer.

Conexión directa a predis

Si necesitas funcionalidades avanzadas de Redis (transacciones, colas, pub/sub, tipos de datos como sets o sorted sets), puedes conectarte directamente usando predis:

$client = new \Predis\Client([
    'scheme' => 'tcp',
    'host'   => config('database.redis.default.host'),
    'port'   => config('database.redis.default.port'),
    'database' => config('database.redis.default.database')
]);

// Ejemplo: lista de espera
$client->lpush('cola:tareas', json_encode(['id' => 123]));
$tarea = $client->rpop('cola:tareas');