Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

caché de query

En esta guía, puede aprender sobre almacenamiento en caché de consultas (query caching). La caché de consultas guarda los resultados de consultas previas de búsqueda y agregación y los reutiliza en el futuro. Esto evita que Mongoid ejecute las consultas nuevamente, aumentando el rendimiento de la aplicación y reduciendo la carga en la base de datos.

En esta sección, puedes aprender a habilitar la funcionalidad de caché de query en tu aplicación. Puedes activar el caché de consultas utilizando el namespace del driver o el namespace de Mongoid.

El driver Ruby proporciona un middleware para activar automáticamente la caché de queries para las solicitudes web de Rack y la ejecución de tareas de Active Job.

Nota

El middleware de caché de query no se aplica al código que se ejecuta fuera de solicitudes web o tareas.

El driver de Ruby proporciona un middleware Rack que habilita la caché de query durante cada solicitud web. El siguiente código demuestra cómo habilitar el middleware de caché de query en una aplicación Ruby on Rails:

config/application.rb
# Add Mongo::QueryCache::Middleware at the bottom of the middleware
# stack or before other middleware that queries MongoDB.
config.middleware.use Mongo::QueryCache::Middleware

Para obtener más información sobre el uso del middleware Rack en aplicaciones Rails, consulta Configurando la pila de Middleware en la documentación de Rails.

El Ruby driver proporciona Query Cache Middleware para Active tarea. Puedes habilitarlo para todas las tareas en un inicializador, como se muestra en el siguiente código:

config/initializers/active_job.rb
# Enable Mongo driver query cache for Active Job
ActiveSupport.on_load(:active_job) do
include Mongo::QueryCache::Middleware::ActiveJob
end

También puedes activarlo para una clase de tarea específica, como se muestra en el siguiente código:

class MyJob < ActiveJob::Base
include Mongo::QueryCache::Middleware::ActiveJob
end

Para habilitar la caché de query manualmente para un segmento específico de código, puedes ejecutar tu código dentro del siguiente bloque:

Mongo::QueryCache.cache do
# Include code here ...
end

Puedes activar y desactivar explícitamente la caché de query, pero recomendamos utilizar la forma de bloque en el ejemplo de código anterior. El siguiente código demuestra cómo habilitar y deshabilitar la caché de query:

begin
Mongo::QueryCache.enabled = true
# Include code here
ensure
Mongo::QueryCache.enabled = false
end

Llamando al first El método en una clase modelo utiliza una ordenación ascendente en el campo _id al devolver el resultado. Esto podría producir un comportamiento inesperado si habilitas el almacenamiento en caché de consultas.

Por ejemplo, si llamas el método all en una clase de modelo antes de llamar first, podrías esperar que el método first utilice los resultados en caché de all. Sin embargo, como Mongoid aplica una ordenación a la segunda llamar, ambos métodos query la base de datos y separadamente caché resultados.

Para usar los resultados almacenados en caché al llamar al método first, llama a all.to_a.first en la clase de modelo, como se muestra en el siguiente ejemplo de código:

Band.all.to_a.first

En el ejemplo anterior, el uso en cadena del método to_a ejecuta la consulta y convierte los resultados en un arreglo en memoria. Luego, el método first simplemente devuelve la primera entrada del arreglo en lugar de activar otra query y almacenar los resultados en caché.

Para aprender más sobre cómo crear criterios de filtro, consulta el Especifica una query de documento guía.

Para aprender cómo personalizar su objetivo de persistencia, consulte la guía de Configuración de persistencia.

Volver

Persistir datos de queries

En esta página