Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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 controlador Ruby proporciona middleware para habilitar automáticamente la caché de consultas para las solicitudes web de Rack y las ejecuciones de trabajos 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, consulte Configuración de 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

Puede habilitar y deshabilitar explícitamente la caché de consultas, pero recomendamos usar el formato de bloque en el ejemplo de código anterior. El siguiente código muestra cómo habilitar y deshabilitar la caché de consultas:

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

Llamando al first El método de una clase modelo utiliza un orden ascendente en el campo _id al devolver el resultado. Esto podría generar un comportamiento inesperado si se habilita 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 utilizar los resultados almacenados en caché al llamar al método first, llame a all.to_a.first en la clase del modelo, como se muestra en el siguiente código de ejemplo:

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