Cache em PHP: Redis, Memcached e soluções integradas para acelerar o site

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 usar cache em PHP?

Qualquer aplicação web moderna em PHP enfrenta problemas de desempenho. Cada consulta ao banco de dados, leitura de arquivos de configuração ou renderização de um template HTML complexo consome tempo e recursos do servidor. O cache é uma técnica que permite salvar os resultados de operações caras em um armazenamento rápido, para que, em uma requisição repetida, os dados prontos sejam entregues instantaneamente.

No PHP, existem vários níveis de cache: desde o cache de bytecode embutido (OPcache) até sistemas distribuídos como Redis e Memcached. Neste artigo, vamos explorar como e quando aplicar cada uma dessas ferramentas para que seu site funcione mais rápido, suporte mais carga e economize recursos.



Soluções embutidas: OPcache e APCu

Antes de conectar serviços externos, vale a pena observar o que o PHP oferece "de fábrica". Dois mecanismos-chave — OPcache e APCu — podem proporcionar um ganho significativo de desempenho sem a instalação de software adicional.



OPcache: Cache de bytecode

Toda vez que o PHP executa um script, ele o compila em bytecode (opcode). O OPcache armazena esse bytecode na memória compartilhada, permitindo pular a etapa de compilação em requisições subsequentes. Isso é especialmente eficaz para frameworks (Laravel, Symfony) e CMS (WordPress, Drupal), onde dezenas de arquivos são carregados a cada requisição.

Configuração no php.ini:

opcache.enable=1opcache.memory_consumption=128opcache.max_accelerated_files=4000opcache.revalidate_freq=60

Recomenda-se habilitar o OPcache em todos os servidores de produção. Esta é, sem dúvida, a maneira mais simples de acelerar uma aplicação PHP em 20–40%.



APCu: Cache de dados do usuário

APCu (Alternative PHP Cache) fornece uma interface simples para armazenar dados arbitrários na memória compartilhada. Ao contrário do OPcache, que armazena código em cache, o APCu guarda resultados de computações: dados do banco de dados, objetos serializados, fragmentos HTML.

Exemplo de cache do resultado de uma consulta SQL:

// Salvamos os dados por 300 segundos$key = 'users_list';$data = apcu_fetch($key, $success);

if (!$success) { $data = $db->query("SELECT * FROM users")->fetchAll(); apcu_store($key, $data, 300);}

return $data;

APCu é ideal para aplicações de página única ou projetos com um único servidor. No entanto, seus dados são armazenados localmente e, ao usar vários servidores (escalabilidade horizontal), você precisará de uma solução distribuída.



Memcached: Cache distribuído simples e rápido

Memcached é um sistema de cache de alto desempenho que opera na memória RAM. Foi criado para acelerar aplicações web dinâmicas, reduzindo a carga nos bancos de dados. Suas principais vantagens são simplicidade, velocidade e suporte para armazenamento distribuído.

Instalação da extensão PHP:

pecl install memcached

Exemplo de conexão e uso:

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

$key = 'article_123';$cached = $memcached->get($key);

if ($cached === false) { $article = getArticleFromDB(123); $memcached->set($key, $article, 3600); // cache por 1 hora} else { $article = $cached;}

Memcached não suporta estruturas de dados complexas (apenas strings e objetos binários), mas lida muito bem com a tarefa de cache "clássico": coloque dados por chave, recupere por chave. É importante lembrar que o Memcached não possui persistência embutida — ao reiniciar o servidor, todos os dados são perdidos.



Redis: Ferramenta poderosa e flexível para cache

Redis não é apenas um cache, mas um armazenamento de dados completo em memória com suporte a persistência, transações e estruturas complexas (listas, conjuntos, hashes, filas). Para o desenvolvedor PHP, o Red

Blogs

Book Recommendations