ruby-on-rails - Rails.cache.fetch 在记忆化方面表现更好吗

标签 ruby-on-rails memcached memoization

我已经搜索过,似乎找不到一个好的来源,是否可以将以下方法组合起来被认为是一种好习惯:当将 memcached 与 dalai gem 一起使用并且有一个为请求多次调用的方法时在模型中使用第二个 block 优于第一个 block 的性能优势?将这样的“记忆化”与 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

最佳答案

如果 total_ham方法在每个请求中被多次调用,那么你应该记住 total_ham 的结果方法,即使您从缓存中取出它。由于您的应用程序服务器和 memcached 服务器之间的往返延迟,memoization 将比访问缓存更快。

我不能说这是否是最佳实践,但这是我在你的情况下会做的。

关于ruby-on-rails - Rails.cache.fetch 在记忆化方面表现更好吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572665/

相关文章:

redux - 比较和对比 redux reselect 与 lodash/underscore memoize...?

python - 当我尝试内存时,为什么我的代码会变慢?

ruby-on-rails - Rails 事务不是原子的吗?

c - 如何在Memcache中存储复杂的数据结构

ruby-on-rails - 用于在 Ubuntu 上进行开发的 Ruby On Rails IDE

NHibernate 2nd Level Cache - Membase MemCache - 多 session 工厂

google-app-engine - Google App Engine 中的 Memcache 1 MB 限制

java - 使这个带有内存的递归斐波那契更快?

javascript - 使用 Rails 的最佳 JavaScript 库?

ruby-on-rails - rails : conditional home link