如何为每个用户缓存24小时的查询?

时间:2013-07-28 15:10:31

标签: ruby-on-rails ruby-on-rails-3 caching memcached

缓存对我来说似乎很复杂。有太多的缓存方式,我当然无法遵循它们中的任何一种。在我的应用程序中,对于每个用户,在他的个人资料中我显示了24个随机用户:

@random_users = User.random(24)

现在我想为每个用户缓存24小时的结果。因此,用户A登录并且查询仅在24小时内运行一次。然后用户B登录并发生同样的事情。但是,我希望单独存储每个用户的缓存结果。这意味着,如果用户B在用户A之后登录,我不希望用户A的缓存过期。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

为此,您必须为每个用户使用不同的缓存键,以便为每个用户单独保存此信息。例如,你可以做

@random_users = Rails.cache.fetch "random_uses_for_user_#{current_user.id}", :expire_in => 24.hours do
  ...
end

假设current_user是您要获取此信息的用户。