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=2Esta é 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 memcachedEm seguida, instale a extensão PHP:
sudo pecl install memcachedAgora 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