MySQL データストアを仮定すると、Ruby on Rails アプリで memcached を使用したくないのはいつですか?
4 に答える
アプリケーションがすべてのリクエストを迅速に処理できる場合は、memcached を使用しないでください。memcached を追加すると、アプリのコーディングに関して精神的なオーバーヘッドが増えるため、必要でない限り実行しないでください。
スケーリングの「あるうねり問題」。
Memcache は強力な分散キャッシュですが、一部のコンテンツではローカル キャッシュよりも高速ではありません。キャッシュを使用すると、ボトルネック (通常はデータベース リクエストとネットワーク リクエスト) を回避できます。あまり頻繁に変更されない (あまり動的ではない) ため、ページ全体を HTML としてローカルにキャッシュできる場合、Web サーバーは memcache にクエリを実行するよりもはるかに高速にこれを提供できます。これは、ほとんどの memcached サーバーと同様に、memcache サーバーが別のマシンにある場合に特に当てはまります。
これの裏返しとして、いつか独自のサーバーに移動する必要があることがわかっているため、他のキャッシュ オプションの代わりに memcache をローカルで使用することがあります。
memcached の主な利点は、分散キャッシュであることです。つまり、一度生成すれば、多くのサーバーにわたってキャッシュからサービスを提供できます (これが memcached が作成された理由です)。以前のすべての回答はこれを無視しているようです-非常にスケーラブルなアプリを構築する必要があったかどうか疑問に思います(これはまさに memcached の目的です)
Danga Interactive は、LiveJournal.com の速度を向上させるために memcached を開発しました。LiveJournal.com は、多数の Web サーバーと多数のデータベース サーバーを備えた 100 万人のユーザーに対して、1 日あたり 2,000 万以上の動的ページ ビューを既に実行していまし た。memcached により、データベースの負荷がほとんどゼロになり、ユーザーのページの読み込み時間が短縮され、リソースの使用率が向上し、memcache ミス時のデータベースへのアクセスが高速化されました。
(私の太字)
したがって、答えは、アプリケーションが単一のサーバーにのみ展開される可能性が高い場合です。
複数のサーバーを使用する可能性が高い場合 (スケーラビリティと冗長性のために)、memcached は (ほぼ) 常に良い考えです。
期限切れになるものをきめ細かく制御したい場合。私のテストによると、memcachedのタイミング解像度は約1秒しかないようです。
例:1秒で期限切れになるように指示すると、1秒から2秒強の間留まる可能性があります。