Cache em PHP: Redis, Memcached e soluções integradas

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

Cache em PHP: Redis, Memcached e soluções integradas — acelerando aplicações web



Cada desenvolvedor PHP enfrenta problemas de desempenho: o banco de dados responde lentamente, as páginas demoram a carregar e o servidor fica sobrecarregado. A solução para esses problemas está no cache adequado. Neste artigo, vamos abordar três principais abordagens para cache em PHP: mecanismos integrados (APCu, OpCache), servidores externos Memcached e Redis. Você aprenderá quando escolher cada ferramenta e obterá exemplos de código prontos para implementação.



1. Soluções integradas: OpCache e APCu



Vamos começar pelo mais simples — cache no nível do motor PHP. Aqui destacamos dois componentes principais.



1.1. OpCache (cache de opcode do PHP)

O OpCache está integrado ao PHP desde a versão 5.5. Ele armazena em cache o bytecode compilado (opcode) dos scripts PHP. Sem ele, cada requisição precisa analisar e compilar o código-fonte novamente — um desperdício de recursos. Ativar o OpCache proporciona um ganho de velocidade de 30 a 50% sem uma única linha de código.

Configuração no php.ini:

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


1.2. APCu (Alternative PHP Cache user)

APCu é um cache para dados do usuário (variáveis, resultados de cálculos). Ele opera na memória RAM e é ideal para armazenar dados pequenos e frequentemente solicitados: configurações, traduções, resultados de consultas SQL simples.

Exemplo de uso do APCu:

<?php// Salva dados no cache por 300 segundosapcu_store('site_config', $config, 300);

// Obtém dados do cache$cached = apcu_fetch('site_config');if ($cached === false) { // Dados não encontrados — carrega e salva $cached = loadConfigFromDB(); apcu_store('site_config', $cached, 300);}

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

Vantagens: não requer serviços externos, fácil de configurar, latência mínima. Desvantagens: funciona apenas em um único servidor, os dados são perdidos ao reiniciar o PHP-FPM.



2. Memcached — cache distribuído para dados simples



Memcached é um sistema de cache distribuído de alto desempenho na memória RAM. É ideal para armazenar pares simples de "chave-valor" e sessões. Diferente do APCu, o Memcached opera como um servidor separado e pode ser compartilhado entre vários servidores web.



Instalação da extensão: pecl install memcached

Exemplo de conexão e uso:

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

// Define com TTL (time to live) de 600 segundos$memcached->set('user_123_profile', $profileData, 600);

// Obtém$profile = $memcached->get('user_123_profile');if ($memcached->getResultCode() === Memcached::RES_NOTFOUND) { // Cache miss — carrega do banco $profile = getUserProfileFromDB(123); $memcached->set('user_123_profile', $profile, 600);}

// Cache de sessões (configuração no php.ini)// session.save_handler = memcached// session.save_path = "localhost:11211"?>

Quando usar Memcached:

  • Cache de resultados de consultas SQL (listas de produtos, categorias)
  • Armazenamento de sessões de usuários em ambiente distribuído
  • Cache de blocos HTML (por exemplo, menu ou rodapé)

Limitações: sem estruturas de dados integradas (apenas strings), tamanho máximo de valor de 1 MB (pode ser aumentado), sem persistência — o cache é limpo ao reiniciar o servidor.



3. Redis — cache avançado com estruturas de dados



Redis não é apenas um cache, mas um armazenamento completo de dados em memória com suporte a tipos complexos: listas, conjuntos, hashes, conjuntos ordenados. Ele suporta persistência (salvamento em disco),

Blogs

Book Recommendations