Overview
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.
Habilitar almacenamiento en caché de consultas
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.
Automatic
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.
Habilitar caché de consultas para solicitudes web de Rack
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:
# 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.
Habilitar caché de query para tarea activa
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:
# 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
Manual
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
Caché el resultado del primer método
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é.
Información Adicional
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.