Overview
En esta guía, aprenderá sobre el almacenamiento en caché de consultas. La caché de consultas guarda los resultados de consultas de búsqueda y agregación anteriores y los reutiliza en el futuro. Esto evita que Mongoid vuelva a ejecutar las consultas, lo que aumenta el rendimiento de la aplicación y reduce la carga de la base de datos.
Habilitar el almacenamiento en caché de consultas
En esta sección, aprenderá a habilitar la función de caché de consultas en su aplicación. Puede habilitar la caché de consultas usando el espacio de nombres del controlador o el 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 activos. Para ver las instrucciones sobre cómo habilitar automáticamente la caché de consultas, consulte Habilitar la sección de caché de consultas para solicitudes web en rack de la guía de configuración del middleware de caché de consultas.
Nota
El middleware de caché de consultas no se aplica al código que se ejecuta fuera de las solicitudes o trabajos web.
Manual
Para habilitar el caché de consultas manualmente para un segmento de código específico, puede ejecutar su 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
Almacenar en 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 se llama al método all en una clase de modelo antes de llamar a first, se podría esperar que el método first usara los resultados almacenados en caché de all. Sin embargo, como Mongoid aplica una ordenación a la segunda llamada, ambos métodos consultan la base de datos y almacenan los resultados en caché por separado.
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, al encadenar el método to_a, se ejecuta la consulta y se convierten los resultados en una matriz en memoria. Posteriormente, el método first simplemente devuelve la primera entrada de la matriz en lugar de ejecutar otra consulta y almacenar los resultados en caché.
Información Adicional
Para obtener más información sobre cómo crear criterios de filtro, consulte la guía Especificar una consulta de documento.
Para aprender a personalizar su objetivo de persistencia, consulte la guía de configuración de persistencia.