Rails 3.2缓存无法正常工作

时间:2015-07-16 12:16:22

标签: ruby-on-rails

我使用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日志。 如果我在" ..."期间更改数据库,我会得到新闻结果。

可能会发生什么?

2 个答案:

答案 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和...用于帖子,它应该工作。如果存在其他查询,它将从缓存返回