查询缓存
Overview
在本指南中,您可以学习;了解查询缓存。查询缓存会保存先前查找和聚合查询的结果,并在将来重复使用。 这可以防止 Mongoid 再次执行查询,从而提高应用程序性能并减少数据库负载。
启用查询缓存
在本节中,您可以学习;了解如何在应用程序中启用查询缓存功能。 您可以使用驱动程序的命名空间或 Mongoid 的命名空间启用查询缓存。
Automatic
Ruby驾驶员提供了中间件,可以自动为 Rack Web 请求和 Active Job作业运行启用查询缓存。 要查看自动启用查询缓存的说明,请参阅查询缓存中间件配置指南的为机架 Web 请求启用查询缓存部分。
注意
查询缓存中间件不适应用在 Web 请求或作业之外运行的代码。
手动
要为特定代码段手动启用查询缓存,可以在以下区块中运行代码:
Mongo::QueryCache.cache do # Include code here ... end
您可以显式启用和禁用查询缓存,但我们建议在前面的代码示例中使用区块形式。 以下代码演示了如何启用和禁用查询缓存:
begin Mongo::QueryCache.enabled = true # Include code here ensure Mongo::QueryCache.enabled = false end
缓存第一个方法的结果
在模型类上调用 first
方法时,会在返回结果时对 _id
字段进行升序排序。 如果启用查询缓存,则可能会产生意外行为。
示例,如果您在调用 first
之前对模型类调用 all
方法,则可能期望 first
方法使用 all
中的缓存结果。 但是,由于 Mongoid 对第二次调用进行了排序,因此这两个方法查询数据库并分别缓存结果。
要在调用 first
方法时使用缓存的结果,请对模型类调用 all.to_a.first
,如以下示例代码所示:
Band.all.to_a.first
在前面的示例中,链接 to_a
方法运行查询并将结果转换为内存中的大量。 然后,first
方法仅返回第一个大量条目,而不会触发另一个查询并缓存结果。
更多信息
如需学习;了解有关创建过滤条件的更多信息,请参阅“指定文档查询”指南。