如何在Rails查詢中緩存數據庫導致的列表?如何在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
緩存的結果是一個實例,從數據庫中懶洋洋地加載,不是作爲具有字段值的類來急切加載的。
一旦它被懶惰地加載,當讀取緩存時,它需要再次讀取數據庫,實際上,我沒有獲得任何緩存。
如何緩存最終結果,而不是數據庫關係?
感謝您的回答,但我的問題與此無關。我知道一旦保存在緩存中,就沒有必要回到數據庫中,這就是我想要的,但緩存的內容不是數據本身,而是數據庫加載器,因此,一旦從緩存中讀取,數據需要再次從數據庫加載,並且是我想要避免的事情。 我已經更改了配置文件,緩存正在保存和使用,但正如我所說,beeing保存的不是我所需要的。 –
如果是這樣,那麼爲什麼不緩存從數據庫收到的確切結果,通過獲取它而不是關係。 – VishalTheBeast
我在問怎麼做。這是我的問題。 –