2008-09-30 12 views
4

MySQLデータストアを想定すると、いつRuby on Railsアプリケーションでmemcachedを使用したくないですか?いつRuby on Railsアプリケーションでmemcachedを使いたくないですか?

+0

「いつですか?」とはどういう意味ですか? Memcacheに保存するデータは何ですか? – unexist

+1

Scaling Railsスクリーンキャストシリーズは優れたシリーズで、使用するキャッシュとその時期を判断するのに役立ちます。 – nitecoder

答えて

6

Memcacheは強力な分散キャッシュですが、一部のコンテンツではローカルキャッシュより高速です。キャッシングは、通常はデータベース要求とネットワーク要求であるボトルネックを回避する必要があります。フルページを頻繁に変更しない(非常に動的ではない)ため、HTMLとしてローカルにキャッシュすることができれば、Webサーバーはmemcacheを照会するよりもずっと速くこの機能を提供できます。これは、memcachedサーバーのようにmemcacheサーバーが別々のマシンにある場合に特に当てはまります。

私は、いつか私はそれを自分のサーバーに移動する必要があることを知っているので、私はときどき他のキャッシュオプションの代わりにローカルmemcacheを使用することです。

+0

これはmemcachedの主な利点を完全に無視しています。つまり、* distributed *キャッシュです。 – DanSingerman

10

アプリケーションがすべてのリクエストをすばやく処理できる場合は、memcachedを使用しないでください。 memcachedを追加することは、あなたのアプリをコーディングする際に余分な精神的なオーバーヘッドなので、必要がなければやらないでください。

スケーリングの "one swell problem to have"です。

+2

+1。 w/memcachedをオフにして新しいアプリを起動するのは時期尚早の最適化です。最初から不必要な複雑さを加えないでください! –

+0

@Matt - 時には、あなたのアプリの拡張が必要な​​量を知っているだけで、キャッシュが必要になることがあります。最初からmemcached(または任意の分散キャッシュ)を追加することは、*常に*早すぎる最適化ではありません。 – DanSingerman

+1

@Douglas F Shearer - memcachedはRails 2.3に焼き込まれているので、精神的なオーバーヘッドはないと思います。 config.cache_store =:mem_cache_store – DanSingerman

0

期限切れのものについて細かい制御をしたいとき。私のテストから、memcachedは約1秒のタイミング分解能しか持たないようです。

EG:1秒以内に何かを期限切れにすると、1秒間と2秒間を超えて滞在する可能性があります。

4

memcachedの主な利点は、キャッシュです。これは、一度生成して、多くのサーバーでキャッシュから提供できることを意味します(これがmemcachedが作成された理由です)。以前のすべての答えはこれを無視しているようだ - それは彼らがこれまで高度にスケーラブルなアプリケーションを構築するために持っていたなら、私は思ってしまう(memcachedを正確に何であるためである)

Danga対話が のスピードを高めるために、memcachedの を開発しましたLiveJournal.comは のサイトで既に2,000万人以上の動的ページを作成しており、 ウェブサーバーの束と データベースサーバーの束で1万人のユーザーに対して1日あたりビューを表示しています。 memcachedは データベースの負荷がほとんどなくなり、 ユーザーのページ読み込み時間が速くなり、リソースの利用率が向上し、 となり、データベースへのアクセスが速くなりました。 memcache miss。

(私の太字)が

だから、答えは:アプリケーションがしか、単一のサーバーに展開される可能性がある場合。

スケーラビリティと冗長性のために複数のサーバを使用する可能性が高い場合は、memcachedは常に(ほぼ)常に良いアイデアです。

+0

memcachedの分散された側面は、RailscastとScaling Railsシリーズには載っていません。あなたの説明をありがとう。非常に便利です –

関連する問題