使用memoization,Rails.cache.fetch的表现是否更好

时间:2013-01-28 22:46:29

标签: ruby-on-rails memcached memoization

我已经搜索过,似乎无法找到一个很好的来源,以确定将以下方法组合起来是否是一种好的做法:当使用带有dalai gem的memcached并且有一个多次调用的方法时请求在模型中第一个块使用第二个块是否具有性能优势?将这样的“memoization”和Rails.cache.fetch结合使用是不错的做法?

def total_ham
  Rails.cache.fetch("#{self.cache_key}/total_ham") do
    self.hams.sum(:metric_tons)
  end
end

def total_ham
  @total_ham ||= Rails.cache.fetch("#{self.cache_key}/total_ham") do
    self.hams.sum(:metric_tons)
  end
end

1 个答案:

答案 0 :(得分:2)

如果每个请求多次调用total_ham方法,那么即使从缓存中取出total_ham方法,也应记住{{1}}方法的结果。由于应用服务器和memcached服务器之间的往返延迟,因此备忘录将比访问缓存更快。

我不能说这是不是最佳做法,但这就是我在你的情况下会做的事情。