Otimize sua aplicação Laravel com o novo Memoized Cache Driver (Laravel 12.9)
A versão 12.9 do Laravel trouxe uma nova funcionalidade importante para otimizar ainda mais suas aplicações: o Memoized Cache Driver. Essa feature permite armazenar temporariamente em memória os valores obtidos do cache durante uma requisição, evitando múltiplas consultas repetitivas ao cache tradicional e melhorando o desempenho geral da sua aplicação.
O que é Memoized Cache Driver?
A nova feature é um driver especial que atua como um decorator em cima de outros drivers de cache já existentes (como Redis, Memcached, Database, etc.). Sua principal função é armazenar em memória os valores obtidos do cache ao longo de uma única execução da aplicação.
Como funciona?
Quando você faz múltiplas chamadas ao cache na mesma requisição, tradicionalmente cada chamada é feita diretamente ao armazenamento externo, causando múltiplos acessos que podem gerar overhead.
Veja o comportamento tradicional:
Cache::get('foo'); // acessa o cache
Cache::get('foo'); // acessa novamente o cache
Cache::get('foo'); // mais um acesso ao cache
Com o Memoized Cache Driver, o comportamento muda:
Cache::memo()->get('foo'); // acessa o cache externo
Cache::memo()->get('foo'); // retorna o valor armazenado em memória
Cache::memo()->get('foo'); // retorna o valor armazenado em memória
Exemplos práticos:
Observe como o Memoized Cache Driver mantém o valor inicial durante a execução da requisição, mesmo que o cache original seja alterado:
Cache::put('name', 'Taylor');
Cache::memo()->get('name'); // "Taylor"
Cache::put('name', 'Tim');
Cache::memo()->get('name'); // Ainda retorna "Taylor"
Especificando Drivers:
Você pode especificar qual driver o Memoized Cache Driver deve usar como base:
// usando driver padrão
Cache::memo()->get('name');
// usando Redis
Cache::memo('redis')->get('name');
// usando Database
Cache::memo('database')->get('name');
Cada driver possui sua própria memória interna, ou seja, valores não são compartilhados entre drivers diferentes:
Cache::driver('redis')->put('name', 'Taylor Redis');
Cache::driver('database')->put('name', 'Taylor Database');
Cache::memo('redis')->get('name'); // "Taylor Redis"
Cache::memo('database')->get('name'); // "Taylor Database"
Cuidados ao utilizar métodos de mutação:
Quando métodos como put, remember, entre outros, são usados, o Memoized Cache Driver automaticamente invalida o valor memoizado para garantir coerência:
Cache::memo()->put('name', 'Taylor'); // grava no Redis e esquece o valor memoizado
Cache::memo()->get('name'); // acessa Redis novamente
Benefícios adicionais:
Uma grande vantagem dessa nova implementação é garantir consistência dentro do mesmo ciclo de execução (request ou job). Mesmo que o valor seja alterado externamente, sua aplicação sempre receberá um valor consistente, evitando bugs ou inconsistências inesperadas:
- Redução drástica de chamadas externas ao cache.
- Performance otimizada em processos com múltiplas chamadas repetitivas ao cache.
- Maior previsibilidade no comportamento da aplicação.
Considerações importantes:
- Eventos não são disparados pelo Memoized Cache Driver, apenas pelo driver subjacente.
- A invalidação dos valores memoizados ocorre mesmo se a operação de mutação falhar.
Essa inovação nasceu das observações feitas através da ferramenta Laravel Nightwatch, monitorando aplicativos reais e identificando melhorias práticas para usuários Laravel.
Para mais detalhes, confira diretamente na PR oficial do Laravel Framework #55304.
Experimente já essa nova funcionalidade e veja sua aplicação Laravel ganhar mais performance e estabilidade!
{AI Engineer} — apaixonado por Laravel, arquitetura de software e construir produtos com impacto. Compartilho aqui tutoriais, descobertas e reflexões sobre o dia a dia de engenharia.
Você também pode gostar
A Importância do Eager Loading no Laravel: Evitando o Problema N+1
O eager loading é uma técnica essencial no Laravel para otimizar o desempenho de aplicações, evitando o problema de consultas N+1. Este artigo explica como o eager loading funciona, os impactos de não utilizá-lo e como configurar o Laravel para prevenir problemas relacionados ao lazy loading, incluindo o uso do recurso de carregamento automático de relacionamentos.
Deploy de Laravel em produção em 2026: Forge, Cloud, Sail ou Kubernetes?
Quatro caminhos pra rodar Laravel em produção em 2026 (Forge, Cloud, Sail+VPS ou Kubernetes) comparados por cenário, com a armadilha que mata seu banco e o checklist de 18 itens antes do go-live.
Prompt para gerar código: 8 padrões que tiram o ar de tutorial genérico da IA
A IA gera código que funciona, mas parece copiado de um tutorial de 2021. Oito padrões de prompt para gerar código que segue o padrão do SEU projeto, não o exemplo genérico. Direto das docs da Anthropic e do Claude Code.
Laravel Boost: o MCP oficial que ensina o agente a ler seu app antes de gerar código
O Laravel Boost é o servidor MCP oficial do time Laravel — expõe routes, models, schema, docs e logs como tools que o agente consulta antes de gerar código. Instalação em 3 comandos, caso real de CRUD Order com 8 relacionamentos comparando com e sem Boost, e o que muda no fluxo de SDD.