Cache de consulta
Nesta página
Visão geral
Neste guia, você aprenderá sobre cache de query. O cache de query salva os resultados de queries de localização e agregação anteriores e os reutiliza no futuro. Isso impede que o Mongoid execute as queries novamente, aumentando o desempenho do aplicação e reduzindo a carga do banco de dados .
Para saber mais sobre esse recurso, consulte Cache de Query na documentação do driver Ruby.
Habilitar cache de query
Nesta seção, você pode aprender como habilitar o recurso de cache de query em seu aplicação. Você pode habilitar o cache de query usando o namespace do driver ou o namespace do Mongoid.
Automatic
O driver Ruby fornece middleware para ativar automaticamente o cache de query para solicitações web do Rack e execuções de tarefa do Active Job. Para visualizar instruções sobre como ativar automaticamente o cache de query, consulte a seção Habilitar cache de query para solicitações web de Rack do guia Configuração do middleware do cache de query.
Observação
O middleware de cache de query não se aplica ao código executado fora de solicitações ou trabalhos da web.
Manual
Para ativar o cache de query manualmente para um segmento de código específico, você pode executar seu código no seguinte bloco:
Mongo::QueryCache.cache do # Include code here ... end
Você pode habilitar e desabilitar explicitamente o cache de query, mas recomendamos usar o formulário de bloqueio no exemplo de código anterior. O seguinte código demonstra como habilitar e desabilitar o cache de query:
begin Mongo::QueryCache.enabled = true # Include code here ensure Mongo::QueryCache.enabled = false end
Armazene em cache o resultado do primeiro método
A chamada do método first
em uma classe de modelo usa uma classificação crescente no campo _id
ao retornar o resultado. Isso pode produzir um comportamento inesperado se você habilitar o cache de query.
Por exemplo, se você chamar o método all
em uma classe de modelo antes de chamar first
, poderá esperar que o método first
use os resultados em cache de all
. No entanto, como o Mongoid aplica uma classificação à segunda chamada, ambos os métodos executam query do banco de dados e armazenam separadamente os resultados em cache.
Para usar os resultados armazenados em cache ao chamar o método first
, chame all.to_a.first
na classe de modelo, conforme mostrado no código de exemplo a seguir:
Band.all.to_a.first
No exemplo anterior, encadear o método to_a
executa a query e converte os resultados em uma array na memória. Em seguida, o método first
simplesmente retorna a primeira entrada da array em vez de disparar outra query e armazenar os resultados em cache.
Informações adicionais
Para saber mais sobre como criar critérios de filtro, consulte o guia Especificar uma query de documento.
Para saber como personalizar seu destino de persistência, consulte o guia Configuração de persistência .