2

データベースクエリの結果をherokuのmemcacheに保存しています。herokuでmemcachierアドオンを使用しています。たとえば、memcache にキャッシュ ユーザーのタスクがあるとします。私はこのようなことをします:

 def cached_tasks
   Rails.cache.fetch([:users, id, :tasks], :expires_in => 12.hours) { tasks.to_a }  
 end

これは問題なく動作しますが、2 つの異なる memcache インスタンスを使用してデータを保存したいと考えています。

なんで?

1 つは非常に頻繁に使用され、基本的にデータは頻繁に変更されます。もう 1 つはビッグ データ オブジェクトであり、決して変更されないか、ほとんど変更されないものです。

2 つの異なるインスタンスを使用して、cached_tasks を memcache_instance_1 に保存し、その他の cached_images を memcache_instance_2 に保存するように指定するにはどうすればよいですか?

同じものを使用しない理由:

キャッシュ全体をフラッシュする必要がある場合があり、それによってビッグデータもフラッシュされますが、これは望ましくありません。

助言がありますか?

4

2 に答える 2

3

envheroku アプリ用に3 つの新しい変数を宣言する

BIG_MEMCACHIER_SERVERS
BIG_MEMCACHIER_USERNAME
BIG_MEMCACHIER_PASSWORD

ディレクトリbig_cache.rbに呼び出されるファイルを追加します。config\initializers

module Rails
  def self.big_cache
    @big_cache ||= ActiveSupport::Cache::DalliStore.new(
      (ENV["BIG_MEMCACHIER_SERVERS"] || "").split(","),
      :username => ENV["BIG_MEMCACHIER_USERNAME"],
      :password => ENV["BIG_MEMCACHIER_PASSWORD"])
  end
end

これで、次のように 2 番目のキャッシュにアクセスできます。

Rails.big_cache.fetch(..)
于 2013-07-23T06:51:58.007 に答える