← Novidades

Redis persistente: filas, sessões e Horizon que não se perdem

Novidades 4 min de leitura

Desde 2024 que tem o Redis incluído em todos os planos, e continua igual. Mas esse Redis é uma cache e comporta-se como tal: começa vazio sempre que é reiniciado e, quando fica cheio, descarta as chaves menos usadas. Para a cache de objetos do WordPress é exatamente o que é preciso, porque tudo o que guarda pode voltar a ser calculado.

Uma fila de trabalhos ou a sessão de um utilizador não podem voltar a ser calculadas. Se a cache se esvaziar, um trabalho pendente desaparece sem que ninguém dê por isso e quem estava dentro da sua aplicação tem de voltar a entrar. Por isso, até agora recomendávamos deixar filas e sessões na base de dados, e o Horizon, que só trabalha com Redis, ficava de fora.

Agora, nos planos Avanza, Max e Elastic, pode ativar um Redis persistente.

O que o torna diferente

É uma instância própria da sua conta. É Valkey 8, compatível com Redis: os mesmos comandos e os mesmos clientes, como o PhpRedis. E comporta-se como as filas e as sessões precisam:

  • Guarda os dados em disco a cada segundo. Ao ser reiniciado, conserva-os e, perante um corte, perde-se no máximo o último segundo.
  • Quando fica cheio, não apaga nada: rejeita as escritas novas com um erro. Numa fila é isso que se quer, que a aplicação avise e não que um trabalho desapareça em silêncio.
  • Entra nas cópias de segurança diárias, tal como o resto dos seus ficheiros.
  • A memória é você que a escolhe: 64 MB por omissão, até 128 MB no Avanza, 256 MB no Max e 512 MB no Elastic. Filas e sessões ocupam pouco: 64 MB chegam para a maioria das aplicações.

Se um uso concreto o exigir, pode alterar os dois comportamentos: retirar-lhe a persistência ou deixar que descarte o menos usado quando fica cheio.

Ativá-lo e ligá-lo

Ativa-se em Alojamento → o seu serviço → Gestor de pacotes, no cartão Redis persistente. Aí mesmo vê a memória que usa e o que ocupa em disco, e pode alterar as suas definições, reiniciá-lo, esvaziá-lo ou desativá-lo.

Liga-se por socket e sem palavra-passe, porque só o utilizador da sua conta o pode abrir. No Laravel são umas poucas linhas do .env, com o seu utilizador do cPanel em vez de USUARIO:

REDIS_CLIENT=phpredis
REDIS_HOST=/home/USUARIO/.hostsuar/redis/redis.sock
REDIS_PORT=0

QUEUE_CONNECTION=redis
SESSION_DRIVER=redis

Pode usar os dois Redis ao mesmo tempo: a cache no Redis de sempre e as filas e as sessões no persistente. No guia, tem como separá-los em config/database.php.

Horizon, finalmente

O Horizon precisa de duas coisas: filas no Redis e um processo que o mantenha em execução. A primeira é o Redis persistente; a segunda, os processos persistentes, que chegam ao mesmo tempo. Com os dois, o Horizon funciona no seu alojamento com o seu painel e as suas métricas.

Tenha em conta que o Redis persistente corre como mais um processo da sua conta, dentro dos seus recursos, e ocupa uma das vagas de processos persistentes do plano: no Avanza, o Redis e o Horizon usam duas das três.

Tem o passo a passo, com a ligação a partir do Laravel, a utilização em conjunto com o Redis de cache e a instalação do Horizon, no guia de Redis persistente.

Continuamos a melhorar.

Veja em que estamos a trabalhar neste momento ou escreva-nos se sentir falta de algo.