web-dev-qa-db-ja.com

Railsとキャッシュ、memcacheとredisを簡単に切り替えることができますか?

RedisとMemcachedを切り替えた場合、コードを変更する必要はなく、構成設定だけを変更するような一般的なAPIはありますか?

26
Blankman

Memcachedクライアントを自分で初期化せず、Rails.cache共通​​APIに依存している限り、MemcachedからRedisへの切り替えは、 redis-store をインストールし、から構成を変更するだけです。

config.cache_store = :memcached_store

config.cache_store = :redis_store

詳細 Rails.cacheに関する情報

42
Simone Carletti

私はあなたの目標を台無しにするのは嫌いですが、一般的なRailsキャッシングのためにmemcachedよりもredisを使用しないことをお勧めします。

私は大規模なRailsアプリケーションでredisとresqueを広範囲に使用しており、キャッシング、raw redis、resqueを1つに統合するのがいいと思いました。いくつかの大きな問題に遭遇しました。

  1. まず第一に、それは遅かった。それは完全に私の特定の使用法、redis-storeライブラリまたはredis自体であった可能性があります。私は何も悪口を言うつもりはなく、あなたのマイレージは変わるかもしれませんが、memcachedが「うまくいく」ときにredisに切り替えるのに多くの時間をダンプするのは面倒です
  2. Memcachedは、サーバーを追加し、一貫したハッシュを使用して目標を達成するのが非常に簡単であるため、優れています。 Redisにもこれがありますが、私の経験では、アプリの一部でモノリシックデータストアとして、また他の部分では、分散された、一貫してハッシュされたキャッシュストレージのブロブとしてRedisを同時に扱うことは困難でした。

あなたのプロジェクトで頑張ってください。私はredisとmemcachedが大好きで、すべてのプロジェクトでそれらを使用していますが、一方はキックアスデータ構造サーバーとしての役割を果たし、もう一方はキャッシングでお尻をキックします。

38
efalcao

Redisの優れた部分には、「リストベース」のもののキャッシュが含まれます。つまり、アプリで発生したものをこのリストからプッシュ/ポップします。

Memcachedから大きな値を逆シリアル化するのではなく、編集してから再シリアル化します。

これは、カスタムフィルターのRubyコードと、基本的なRailsキャッシュ)で行われます。

2
Kevin