APCとMemcachedの違い、および両方をキャッシュビンに使用する方法


7

MemcachedとAPCの違いと、人々がどちらか一方または両方の使用について語る理由を理解しようとしています。完全に異なる役割を持っていると思ったので、なぜ両方を使用しないのか理解できません。これが私の理解です:

APC

これにより、PHPコードのチャンクがキャッシュされ、RAMに格納されます。次に、同じコードを再度実行する必要がある場合、そのコードはすでにキャッシュされており、メモリから高速で実行されます。

PHP-FPMを実行する私の特定のケースでは、これによりその負荷が軽減されます。

Memcached

(2つのphpモジュールの違いは無視し、この目的のために同じものとして扱います)

これはDBオブジェクトをキャッシュし、RAMに格納します。次に、drupalが同じデータベースオブジェクトを呼び出す必要がある場合、すべての情報はそこにあり、データベースに移動する必要はありません。

MySQLを実行する私の特定のケースでは、これによりその負荷が軽減されます。

Drupalキャッシュビン

Drupal Stack Exchangeには、APCとmemcachedについて言及しているキャッシングとキャッシュビンに関する質問がたくさんあります。

このため、この分野で非常に有益な質問のいくつかは、Memcachedを使用することをお勧めします。他のいくつかの質問では、両方を導入することに大きな違いはないと述べています。

しかし、私はこれがどのように機能するか理解していません。完全に異なるものをキャッシュしていないのですか?

よく使われるビューがあるとします。memcachedはビューに表示されるDBオブジェクトをキャッシュしていませんか?APCはそれらを呼び出すモジュールコードをキャッシュしていますか?

各Drupalキャッシュビンに使用できるキャッシュは1つだけなので、DBオブジェクトまたはPHPコードをキャッシュすることを選択できます。実際には、ほとんどのDrupalキャッシュビンは、2つのキャッシュのパフォーマンスの差がほとんどないか、大きすぎてすべてをキャッシュできません。 PHPでDBオブジェクトをキャッシュすることが唯一の合理的なオプションですか?

(したがって、ほとんどの人がmemcacheをデフォルトのキャッシュビンオプションとして提案する理由、つまり$conf['cache_default_class'] = 'MemCacheDrupal';


それらは比較可能ではありません-APCはopcodeキャッシュです(コードの実行速度を上げるために関数呼び出しの結果をキャッシュします)。Memcache、redis、またはここで置き換えるメモリ内のデータストアは、サイトのデータのキャッシュとして使用されます。りんごとオレンジ。他のテクノロジーと同様に、「どちらを使用すればよいですか?」あなたはあなたのアプリとあなたの予想される負荷であなたのサーバー上でのそれらの使用をベンチマークした後にのみあなたが答えることができます。これら2つの一般的なアドバイスについては、stackoverflow.com / questions / 815041 /…をご覧ください
クライヴ

1
ところで、前のコメントは非常に単純化されすぎています(たとえば、APC データストアキャッシュとして使用できますが、一般的にはそうではありません)。両方のタイプのキャッシュが役立つかどうかを理解するために、できる限り多くを読むことをお勧めします
Clive

APCとmemcachedの間の決定について人々が多くの質問で語る理由を理解しようとしていました。それらが両方とも完全に異なる場合、なぜ両方とも同じDrupalプロジェクトでそれぞれの強みをカバーすることができないのでしょうか。おそらく、memcachedとは対照的に、同じキャッシュビンをAPCでカバーするように設定すると、完全に異なるキャッシュを取得しますか?(そして、あなたのサイトの使用方法と構造によっては、あなたにとってより良いでしょう)
Dominic Woodman '11

1
@DominicWoodman DrupalのAPCモジュールは、オペコードのキャッシュを行いません。これは、APCユーザーキャッシュを使用する代替キャッシュバックエンドです。
mpdonadio

これもおかしいと思います。
mpdonadio

回答:


2

APCu
他のサーバーとキャッシュを共有しませんが、より高速です。

Memcached
他のサーバーと共有でき、速度が遅くなります。

同じDrupalサイトに2つ以上のWebサーバー(apache / nginx)がある場合は、Memcachedが必要です。単一のマシンで実行している場合は、APCuが最も高速です。何があってもOPcacheをオンにする必要があります。

LCacheは、2つ以上のWebサーバー環境でAPCuを使用する際の問題を修正するために設計されたモジュールです。


0

APCとmemcacheの主な違いを確認する。apcとmemcacheのインストール方法。この投稿を参照できます。 http://www.phpwala.com/php/difference-between-apc-and-memcache-php/2016/02

本当に役に立ちました。ありがとう


3
リンクのみの回答は投稿しないでください。リンクが無効になると、回答の価値が失われます。回答に記事の引用を含めて、全体像がここでも読めるようにできますか?
Neograph734 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.