Back-End

26 fev, 2019

Sessões do PHP com Redis

Publicidade

Introdução

Hoje quero voltar a falar sobre o Redis. Se você não sabe do que se trata o Redis, eu tenho um artigo explicando o que é e os primeiros passos que você pode acessar clicando no link abaixo:

Mas, para resumir: o Redis é um banco de dados não relacional armazenando os dados na memória. Ele funciona basicamente com uma estrutura de chave valor. Muito bom para ser usado como cache e para controlar suas sessões.

Neste artigo mostrarei como, em poucos passos, podemos configurar o PHP para que ao invés de armazenar as suas sessões em arquivos no disco – como ele faz por padrão – ele passe a armazenar as suas sessões dentro do Redis.

Por que usar o Redis?

Usando o Redis nós podemos montar uma arquitetura para sua aplicação a onde as sessões estarão centralizadas em um lugar fora da própria aplicação, nos permitindo ter um controle maior e mais facilitado sobre elas.

Fazendo isso podemos escalar a nossa aplicação horizontalmente sem termos que nos preocupar com a sessão do usuário. Além disso, fica muito mais fácil para fazermos interoperabilidade entre linguagens e outras tecnologias. Por exemplo, podemos fazer o NodeJs ou Python ter acesso ao usuário logado no sistema.

Instalando a extensão do Redis no seu PHP

Para fazermos isso precisamos instalar uma extensão do PHP e isso é diferente dependendo do sistema operacional. Mostrarei esse processo usando o Linux e o Windows.

No Windows

No Windows, a melhor forma que eu achei de fazer a instalação é acessando a página da PECL do Redis. Aqui você encontra todas as versões da extensão.

Escolha a versão que preferir e não esqueça de baixar a versão em DLL, não em .TGZ – depois é só escolher a versão para seu PHP.

Depois de baixar, pegue o arquivo php_redis.dll e coloque na sua pasta de extensões dentro da pasta do seu PHP e adicione essa linha no arquivo php.ini:

extension=php_redis.dll

No Linux

O processo no Ubuntu (que é a distribuição que eu estou acostumado) e derivados basta usar o seu gerenciador de pacotes.

sudo apt install php[verão só PHP]-redis

Acredito que para outras distribuições Linux o processo seja semelhante só usando o gerenciador de pacotes de cada distribuição.

Testando a instalação

Para verificar se instalação foi feita corretamente basta rodar o comando php -m no seu terminal ou cmd, caso esteja no Windows.

php -m

Rodando esse comando deve aparecer redis entre as extensões instaladas do seu PHP.

Ou, se preferir, pode visualizar isso na sua página do phpinfo.

Configurando o PHP

Agora, com a extensão instalada é bem simples. Basta acessar o arquivo php.ini e encontrar essas duas linhas:

session.save_handler = files
session.save_path = "N;/path"

E mude as duas para:

session.save_handler = redis
session.save_path = "tcp://[ip do seu servidor]:[porta do seu servidor]?auth=senha_do_redis"

Por padrão, a porta do redis é 6379 e o auth é opcional. Isso é só se o seu redis possui senha para acesso.

Pronto, agora toda vez que você estiver usando sessões no seu PHP vai saber que elas estão sendo salvas no seu servidor Redis.

Conclusão

Recentemente eu precisei fazer o PHP guardar as sessões no Redis e surgiu a ideia de escrever esse artigo para documentar e compartilhar o processo. É um processo simples, mas espero que possa ajudar.