gpt4 book ai didi

ruby-on-rails - 如何在 Rails 查询中缓存数据库产生的列表

转载 作者:可可西里 更新时间:2023-11-01 11:30:31 24 4
gpt4 key购买 nike

如何在 Rails 查询中缓存数据库生成的列表?

@total_untagged = Rails.cache.fetch("tags_controller/untagged/@total_untagged", expires_in: 1.hour) do
InventoryApi::BaseEntity\
.joins(@object_type.to_sym)
.includes(:base_entities_tags)
.where({ base_entities_tags: { base_entity_id: nil }})
.size.to_int
end

此代码加载 InventoryApi::BaseEntity 模型并将其保存在缓存中,键值为:

tags_controller/untagged/@total_untagged

缓存的结果是一个实例,从数据库中延迟加载,而不是像具有字段值的类那样预先加载。

一旦它被延迟加载,当读取缓存时它需要再次读取数据库,实际上,我没有获得任何缓存。

如何缓存最终结果,而不是数据库关系?

最佳答案

一旦保存在缓存中,就不需要再次读取数据库,直到缓存失效。如果您在本地使用它,请记住以下几点。这是来自 http://guides.rubyonrails.org/caching_with_rails.html .

To play around with caching locally you'll want to enable caching in your local environment by setting config.action_controller.perform_caching to true in relevant config/environments/*.rb.

Changing the value of config.action_controller.perform_caching will only have an effect on the caching provided by the Action Controller component. For instance, it will not impact low-level caching.

关于ruby-on-rails - 如何在 Rails 查询中缓存数据库产生的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40772140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com