我使用Rails.cache.write和Rails.cache.read来存储一些activerecord对象,但它似乎不是workinkg。
posts = Post.find(...)
Rails.cache.write(myKey, posts)
... next request...
foo = Rails.cache.read(myKey)
尽管变量foo被正确填充,但这会生成相同的sql日志。 如果我在" ..."期间更改数据库,我会得到新闻结果。
可能会发生什么?
答案 0 :(得分:2)
建议缓存序列化数据(仅限结果),而不是具有自己的类名和单个对象ID的ActiveRecord对象。
Fetch technique也是首选
Rails.cache.fetch(myKes) do
Post.find(...).as_json
end
答案 1 :(得分:0)
试试这个。它将在30秒后到期。
Rails.cache.fetch("posts_for_#{myKey}", expires_in: 30.seconds) do
posts = Post.find(...)
posts
end
把它放在某种方法中,并传递方法myKey和...用于帖子,它应该工作。如果存在其他查询,它将从缓存返回