Como utilizar o sistema de cache do SQL no Symfony: armazenando resultados de consultas para melhorar o desempenho
O Symfony possui um sistema de cache de SQL que ajuda a armazenar os resultados de consultas frequentes em um cache para melhorar o desempenho de uma aplicação.
Por que armazenar resultados de consultas em cache pode melhorar o desempenho?
Consulta de banco de dados é uma das ações mais custosas em termos de desempenho em uma aplicação. Quando uma página é carregada, muitas vezes a mesma consulta é executada várias vezes, o que pode aumentar significativamente o tempo de carregamento da página. Armazenar os resultados dessas consultas em um cache pode melhorar o desempenho, pois, ao invés de executar a consulta toda vez que ela é solicitada, a aplicação obtém o resultado a partir do cache.
Como utilizar o sistema de cache de SQL do Symfony?
Para utilizar o sistema de cache de SQL do Symfony, siga os seguintes passos:
- Crie um serviço de cache no arquivo services.yaml:
- Adicione uma opção de cache à consulta:
- Obtenha o resultado da consulta:
services:
app.cache.default:
class: SymfonyComponentCacheAdapterFilesystemAdapter
arguments: ['cache.default']
Neste exemplo, estamos criando um serviço de cache com o nome “app.cache.default” utilizando o adaptador “FilesystemAdapter”, que armazena os dados do cache em arquivos em disco.
$qb = $entityManager->createQueryBuilder()
->select('u')
->from(User::class, 'u')
->where('u.email = :email')
->setParameter('email', $email)
->getQuery()
->useResultCache(true, 3600, 'user_by_email_' . $email);
Neste exemplo, estamos adicionando uma opção de cache à consulta utilizando o método “useResultCache”. O primeiro parâmetro indica que o cache deve ser utilizado (true), o segundo parâmetro indica o tempo de vida do cache em segundos (3600 segundos neste exemplo) e o terceiro parâmetro é um identificador único para esta consulta. O identificador geralmente inclui os parâmetros da consulta para que cada consulta tenha um cache único.
$user = $qb->getOneOrNullResult();
Com o sistema de cache configurado e a opção de cache adicionada à consulta, o resultado da consulta será obtido do cache se estiver disponível. Se não houver nada no cache, a consulta será executada normalmente e o resultado será armazenado no cache para uso futuro.
Utilizando o sistema de cache de SQL do Symfony, podemos melhorar significativamente o desempenho de uma aplicação, especialmente quando há consultas frequentes e repetidas. No entanto, é importante lembrar que o cache deve ser utilizado com cuidado e devemos sempre verificar se os dados armazenados no cache estão atualizados.