Cache em PHP: Redis, Memcached e soluções integradas: do A ao Z

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que o cache é a base de uma aplicação PHP rápida



Todo desenvolvedor PHP, mais cedo ou mais tarde, enfrenta problemas de desempenho. Quando o banco de dados começa a ficar lento e as páginas demoram de 3 a 5 segundos para carregar, a primeira coisa que vem à mente é o cache. Não se trata apenas de "salvar dados em algum lugar", é toda uma filosofia de otimização.



Neste artigo, abordaremos todas as abordagens populares de cache em PHP: desde o simples cache de arquivos até soluções industriais com Redis e Memcached. Você aprenderá como escolher a ferramenta certa e evitar erros comuns. Vamos lá!



1. Mecanismos de cache integrados no PHP



1.1. Cache de opcode: OPcache



Antes de falar sobre armazenamentos externos, vale lembrar que o próprio PHP pode armazenar em cache seu código. O mecanismo OPcache salva scripts compilados na memória RAM, evitando que o PHP precise analisar e compilar arquivos a cada execução.



Ativação do OPcache no php.ini:



opcache.enable=1opcache.memory_consumption=128opcache.max_accelerated_files=10000opcache.revalidate_freq=2


Esta é a primeira linha de defesa. Sem o OPcache, qualquer outro cache será menos eficiente.



1.2. APCu — cache de usuário em memória



APCu (Alternative PHP Cache) é uma extensão para armazenar dados arbitrários na memória compartilhada do processo PHP. É ideal para projetos pequenos onde não é necessário cache distribuído.



Exemplo de trabalho com APCu:



<?php// Salva dados por 5 minutosapcu_store('my_key', ['data' => 'value'], 300);

// Lê dados$data = apcu_fetch('my_key');if ($data === false) { echo "Cache não encontrado, gerando novamente";}

// Remove a chaveapcu_delete('my_key');?>


Vantagens: velocidade extremamente rápida, simplicidade. Desvantagens: os dados existem apenas em um único servidor.



2. Memcached: simplicidade e velocidade



2.1. O que é Memcached e para que serve



Memcached é um sistema de cache distribuído em memória RAM. Foi criado para acelerar aplicações web dinâmicas, reduzindo a carga nos bancos de dados. Ao contrário do APCu, o Memcached funciona como um servidor separado, ao qual diferentes instâncias PHP podem se conectar.



2.2. Instalação e conexão do Memcached



Primeiro, instale o servidor Memcached:



sudo apt install memcachedsudo systemctl start memcached


Em seguida, instale a extensão PHP:



sudo pecl install memcached


Agora você pode trabalhar com o cache:



<?php$memcached = new Memcached();$memcached->addServer('localhost', 11211);

// Salva por 10 minutos$memcached->set('user_123', ['name' => 'João', 'email' => 'joao@example.com'], 600);

// Lê$user = $memcached->get('user_123');if ($user === false) { // Carrega do banco de dados}?>


2.3. Quando escolher Memcached



  • Quando você precisa de um armazenamento simples de chave-valor
  • Quando os dados têm vida curta (sessões, dados temporários)
  • Quando não é necessária persistência (Memcached não salva dados em disco)


3. Redis: ferramenta poderosa para cenários complexos



3.1. Por que Redis é melhor que Memcached?



Redis não é apenas um cache, é um banco de dados in-memory completo com suporte a estruturas de dados complexas: listas, conjuntos, hashes, mapas de bits. Ao contrário do Memcached, o Redis suporta:



  • Persistência — os dados não são perdidos na reinicialização
  • Transações e scripts Lua
  • Pub/Sub para troca de mensagens
  • Replicação e clusterização


3.2. Exemplos de trabalho com Redis em PHP



Para trabalhar com Redis, use

Blogs

Book Recommendations