[ Laravel ] Como habilitar o suporte a sessões com Redis

Neste post irei demonstrar como proceder com a instação do Redis. O Redis pemite maior velocidade de acesso à sessões no PHP visto que por padrão o PHP armazena sessões em arquivo, e o acesso ao disco geralmente é mais lento ou a quantidade de memória RAM é limitada e não serve como segunda opção. O foco aqui não é ensinar a utilizar o Redis, nem realizar a instalação para cada sistema operacional, e no meu caso, escolhi o Ubuntu (que é um Debian-like), mas para os demais passos são iguais para todos os demais sistemas.

Instação do Redis

A primeira coisa ser feita é instalar o Redis.

Para o uso com o Laravel não precisamo de muita coisa!

Se você estiver num Linux Debian-like (Ubuntu, Mint, Debian, etc…) , digite:

sudo apt install redis

Feito isso, voce pode testar:

redis-cli

Dentro do Redis, digite:

keys *

Veja que não há nada ainda.

Para sair digite:

quit

(ou Ctrl+C)

Instalação do Predis

Para o Redis se comunicar com o Laravel é preciso de uma camada intermediária em PHP.

A opção para o Laravel é usar a biblioteca Predis.

Na pasta raiz do projeto do Laravel, digite:

composer require predis/predis

Uma vez que você deseja usar sessões com o Redis, é preciso informar ao Laravel, claro…

Para tal, abra o arquivo .env e modifique o valor de SESSION_DRIVE para redis

SESSION_DRIVER=redis

Isso fará com que o Laravel use o Redis como driver de sessão.

E no arquivo config/session.php modifique a linha

'connection' => null,

para

'connection' => 'default',

Isso fará com que o laravel utilize a conexão padrão que está no arquivo config/database.php

...
'redis' => [

    'client' => 'predis',

    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,
    ],

]

1,2,3, Testando… Som!

Com tudo instalado e configurado, faça um teste simples em algum controller:

...
public function index(Request $request)
{
    $request->session()->put('Laravel', 'The PHP Framework For Web Artisans');
    dd($request->session()->get('Laravel');
}

Recarregue a página e se tudo estiver certo, nenhuma Exception será disparada e você deverá ver o valor da chave Laravel.

Você pode verificar novamente no Redis:

keys *

E verá algo como:

"laravel_cache:dbGcvQOsBaFnkZA9UGJeizOoNJQhKIeXt9klkpKc"

Basicamente, é isso.

Caso queira verificar o valor de uma chave no Redis, execute (dentro do Redis):

mget laravel_cache:dbGcvQOsBaFnkZA9UGJeizOoNJQhKIeXt9klkpKc (troque pela sua chave)

Vale lembrar que as sessões serão expiradas automaticamente conforme configuradas no .env conforme definido em SESSION_LIFETIME=120

Mas caso queira deletar uma chave do Redis, execute (dentro do Redis):

del laravel_cache:dbGcvQOsBaFnkZA9UGJeizOoNJQhKIeXt9klkpKc (troque pela sua chave)

Ealvez você precise limpar o Redis, para tal, no terminal (nao dentro do Redis) execute:

redis-cli flushall

Bom, é isso ai! Espero ter lhe ajudado!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.