我正在尝试了解如何在我的rails应用程序中正确使用memcache。
目前,在我的应用程序的标题视图中,我有一个像这样的条件:
<% if current_user.company.stats == true %>
因此,每次加载任何页面时,都会访问数据库以检查当前用户的公司是否已启用统计信息。
这当然对我来说很疯狂。
所以我的问题是,我应该如何使用memcache来解决这个问题。公司很少改变,因此应该缓存与它们相关的数据。
我理解像这样的东西会缓存它们:
def self.all_cached
Rails.cache.fetch('Company.all') { all }
end
但我知道这不是我需要的 - 对吗?
答案 0 :(得分:2)
Memcached可以被视为一个大的地图键值。
你应该在你的观点中写下这样的东西:
<% if stats_enabled?(current_user.company) %>
然后编写辅助方法(例如ApplicationHelper
):
def stats_enabled?(company)
Company.stats_enabled?(company)
end
和你模型上的缓存方法:
class Company < ActiveRecord::Base
...
def self.stats_enabled?(company)
return Rails.cache.fetch(company.id) {
Company.find(company.id).stat
}
end
...
end