(16) 981791110 contato@policast.studio

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:

  1. Crie um serviço de cache no arquivo services.yaml:

  2. 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.

  3. Adicione uma opção de cache à consulta:

  4. $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.

  5. Obtenha o resultado da consulta:

  6. $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.