在RoR中缓存昂贵的查询结果

时间:2011-12-23 20:44:42

标签: ruby-on-rails ruby conventions

所以我有这个昂贵的数据库查询,其结果不会经常变化。

问题是,对于这个查询,我唯一真正关心的是50%的原始数据串。

是否完全反对“RoR way”TM使用页面缓存来缓存昂贵且经常使用的查询的结果?

在数据库服务器本身上缓存结果集有点过分,因为我真的只关心从查询结果中收集的一些数据。 并且页面缓存是浪费的,因为几个不同的页面都使用了这些数据,并且只有在它周围的视图发生变化时才会缓存相同的内容。

1 个答案:

答案 0 :(得分:4)

听起来像是你想要的铁路缓存

Rails.cache.fetch('cache_key') do
  # calculations here
end

执行计算并将块的返回值填入缓存中或从缓存中读取值。

您可以显式地过期(Rails.cache.delete)或设置到期时间或使用分代缓存键。

您可以使用各种缓存存储,但其中一种常见的缓存存储是memcsched。有关如何配置缓存存储here

的详细信息