Redis e Memcached com PrestaShop: quando compensam e o que pode correr mal
Uma cache de consultas pode acelerar uma loja grande, ou fazer com que veja dados de há meia hora. Contamos-lhe como decidir e como evitar surpresas.
O Redis e o Memcached são armazéns em memória que o PrestaShop (ou um módulo) pode usar para guardar resultados de consultas à base de dados e não as repetir. Em lojas com muito tráfego e catálogos grandes, a poupança é real. Em lojas pequenas, muitas vezes só acrescenta complexidade.
Quando compensa
- Muitas visitas em simultâneo e a base de dados é o gargalo medido.
- Catálogo grande com muitas consultas repetidas (categorias, características, filtros).
- Tem controlo do servidor para instalar e vigiar o Redis.
O problema de sempre: invalidar
Uma cache de consultas tem de saber quando um dado mudou para deixar de servir a versão antiga. Se guardar o resultado de «quantos produtos há nesta tabela» durante 30 minutos e alguém inserir linhas sem que a cache dê por isso, durante esses 30 minutos toda a gente vê o número antigo.
Boas práticas
- Exclua as tabelas voláteis: carrinhos, encomendas, stock, clientes e sessões nunca devem ir para a cache.
- TTL razoáveis e uma forma simples de limpar a cache a partir do back office.
- Os scripts de manutenção, importações e crons devem trabalhar contra a base de dados real, não contra a cache.
- Cuidado ao desinstalar: algumas caches instalam overrides das classes de base de dados. Se a pasta do módulo for apagada sem o desinstalar, esses overrides podem estragar cada escrita na loja. Desinstale sempre a partir do back office e verifique depois a pasta
override/classes/db/.
Alternativas antes do Redis
- Índices nas consultas lentas.
- Cache do Smarty bem configurada.
- Cache de página para visitantes anónimos, bem excluída do carrinho e da conta.
Se isso não chegar, então sim: uma cache de dados, bem configurada e vigiada.