【问题标题】:Using memcache in rails 3 for a set of records在 rails 3 中使用 memcache 获取一组记录
【发布时间】:2011-08-05 14:02:10
【问题描述】:

我正在尝试了解如何在我的 rails 应用程序中正确使用 memcache。

目前,在我的应用程序的标题视图中,我有一个这样的条件:

<% if current_user.company.stats == true %>

所以每次加载任何页面时,它都会访问数据库以检查当前用户的公司是否启用了统计信息。

这对我来说当然很疯狂。

所以我的问题是,我应该如何使用 memcache 来解决这个问题。公司很少发生变化,因此应缓存与它们相关的数据。

我知道这样的事情会全部缓存:

  def self.all_cached
    Rails.cache.fetch('Company.all') { all }
  end

但我知道这不是我需要的——对吧?

【问题讨论】:

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


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      相关资源
      最近更新 更多