Desempenho e monitorização

Configurar o Redis como cache de objetos

Revisto a 11 min de leitura cache Redis

O Redis permite conservar em memória dados que a aplicação pode reutilizar. Para o aproveitar, precisa de ativar o serviço no alojamento e ligar uma aplicação compatível. Ligar o Redis não faz com que todas as consultas SQL sejam armazenadas automaticamente.

O Redis Cache é apenas cache: começa vazio sempre que é reiniciado e descarta chaves ao encher. Para filas, sessões ou outros dados que não se podem perder, os planos Avanza, Max e Elastic têm o Redis persistente, que guarda os seus dados em disco.

Pode ser útil em lojas, cursos ou administrações com atividade repetida. Um site informativo com boa cache de página talvez não note diferença. A explicação da cache de objetos do WordPress ajuda-o a distinguir os dois casos.

Ativar o Redis na área de cliente

  1. Abra o alojamento e entre em Gestor de pacotes.
  2. No cartão Redis Cache, ligue o interruptor.
  3. Reveja a memória atribuída e clique em Ativar Redis Cache.
  4. Aguarde que o painel confirme a ativação. Abra Dados de ligação para consultar os valores.

Gestor de pacotes do alojamento com o cartão Redis Cache

Todos os planos incluem Redis para cache. Os limites configurados são 16 MB no Inicia, 32 MB no Webmaster, 64 MB no Avanza, 100 MB no Max, 200 MB no Elastic e 16 MB por conta multiconta. Consulte a memória que o seu serviço mostra; depois de mudar de plano pode aparecer como pendente de aplicar.

Este limite corresponde aos dados do Redis, não a toda a RAM do processo. Vários sites de uma conta partilham essa capacidade. Não há um tamanho ideal universal: depende de quanto armazenam e reutilizam.

Dados de ligação

Campo Valor
Tipo Unix socket
Host ou caminho /tmp/redis.sock
Porta 0

Painel de dados de ligação do Redis Cache

O caminho é o que a sua conta vê dentro do seu ambiente isolado. O facto de outra conta mostrar o mesmo caminho não significa que partilhe a sua instância. A aplicação deve ser executada neste alojamento; não é um endereço para ligar a partir do seu computador.

WordPress e WooCommerce com o LiteSpeed Cache

Utilize uma única integração de cache de objetos por instalação. Se outro plugin gerir wp-content/object-cache.php, desative primeiro a sua integração seguindo as respetivas instruções.

  1. Instale e ative o LiteSpeed Cache.
  2. Entre em LiteSpeed Cache > Cache > Object.
  3. Selecione Redis como método e configure o host e a porta da tabela anterior.
  4. Atribua um Redis Database ID diferente do dos outros sites da conta.
  5. Ative Object Cache, guarde e verifique o estado da ligação. Se faltar a extensão Redis, ative-a na versão de PHP que esse site utiliza antes de continuar.

Verifique o frontend, o painel de administração e a atualização de conteúdos. A cache de objetos não substitui as exclusões de página do carrinho, do pagamento e das áreas privadas.

WordPress com o Redis Object Cache

Em alternativa, instale o Redis Object Cache. Antes de ativar a sua cache de objetos, guarde uma cópia do wp-config.php e adicione estas linhas antes de o WordPress carregar a sua configuração. Modifique as constantes existentes se já estiverem definidas; não as duplique.

define('WP_REDIS_SCHEME', 'unix');
define('WP_REDIS_PATH', '/tmp/redis.sock');
define('WP_REDIS_PORT', 0);
define('WP_REDIS_DATABASE', 1);

O 1 é um exemplo: escolha um identificador livre nessa conta. Abra as definições do plugin, verifique a ligação e ative a cache de objetos. Reveja o seu diagnóstico se não conseguir criar o ficheiro de integração ou se detetar outro já instalado. Consulte as opções do plugin para configurações especiais.

PrestaShop e outras aplicações

O módulo deve ser compatível com a sua versão da aplicação e admitir ligação por socket Unix. Não basta que anuncie suporte para Redis se só aceitar host e porta TCP. Antes de comprar um módulo, confirme estes requisitos com o respetivo programador.

Configure o caminho e a porta deste guia, separe os dados de cada site e verifique o resultado com o diagnóstico do módulo. Não adapte um guia de Redis remoto abrindo uma porta do servidor.

Laravel

Com a extensão PhpRedis disponível para o PHP da aplicação, configure a ligação no .env:

REDIS_CLIENT=phpredis
REDIS_HOST=/tmp/redis.sock
REDIS_PORT=0

Mantenha as chaves de config/database.php que leem estes valores. Para o usar como armazenamento de cache, também deve selecionar o Redis em config/cache.php: os projetos atuais costumam ler CACHE_STORE, enquanto projetos anteriores podem usar CACHE_DRIVER. Verifique que variável o seu projeto lê; alterar só a ligação não altera o armazenamento.

Atribua à ligação de cache um índice Redis próprio, por exemplo através de REDIS_CACHE_DB se a sua configuração utilizar essa variável, e um prefixo específico do projeto. Atualize a cache de configuração com o seu procedimento de implementação e teste guardar, ler e retirar uma chave temporária de teste a partir da aplicação.

As sessões e as filas não vão para esta instância: o Redis Cache não guarda nada em disco e descarta chaves ao encher, pelo que uma sessão ou um trabalho pendente poderiam desaparecer sem aviso. Guarde-as na base de dados, que é a configuração por omissão desde o Laravel 11; em projetos anteriores, crie antes as suas tabelas com php artisan session:table e php artisan queue:table e execute as migrações:

CACHE_STORE=redis
SESSION_DRIVER=database
QUEUE_CONNECTION=database

No Avanza, Max e Elastic também pode levar filas e sessões para o Redis persistente e deixar a cache nesta instância: as duas funcionam ao mesmo tempo, cada uma com o seu socket. O Horizon só funciona com filas no Redis, por isso com o Redis Cache não é uma opção segura: use queue:work sobre a base de dados ou o Horizon sobre o Redis persistente. Siga a documentação de ligação do Laravel para a versão instalada.

Vários sites no mesmo alojamento

O Redis costuma dispor de 16 bases lógicas, numeradas de 0 a 15. Atribua uma diferente a cada integração: Redis Database ID no LiteSpeed Cache, a constante do exemplo no Redis Object Cache ou a ligação de cache no Laravel.

Estas bases não são uma separação de segurança nem têm memória independente. Uma operação que esvazie toda a instância afetaria os restantes sites. Evite comandos globais como FLUSHALL e reveja o alcance do botão de purga de cada integração.

Medir e desativar

Compare as mesmas operações antes e depois, com várias repetições. Reveja acertos, falhas, memória e expulsões quando o plugin oferecer esses dados. Uma cache acabada de esvaziar precisa de voltar a encher-se.

O Redis guarda os dados apenas em memória: quando o serviço ou o servidor reiniciam, a instância começa vazia e a aplicação volta a enchê-la. Por isso serve para cache e não para dados que tenham de ser conservados; para esses existe o Redis persistente.

A política prevista é allkeys-lru: quando atinge o limite, o Redis pode expulsar chaves pouco usadas recentemente, mesmo que não tenham expiração. Não elimina necessariamente as mais antigas. As expulsões contínuas podem reduzir a utilidade da cache; reveja o que é guardado antes de ampliar o plano.

Para deixar de o usar, desative primeiro a integração em todas as aplicações da conta, verifique que funcionam e depois desligue o Redis a partir do Gestor de pacotes. Desligar o serviço antes pode provocar erros de ligação no site.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.