7

オブジェクトのキャッシュに memcache を使用していますが、APC のようなオペコード アクセラレータを追加したいと考えています。どちらもキャッシュを伴うため、「お互いに足を踏み入れる」かどうかはわかりません。つまり、memcache がすでに OP コード アクセラレータであるかどうかはわかりません。

誰かが明確にすることができますか?私はそれらの両方を使用したいと思います-ビットは異なるものです。オブジェクトをキャッシュするための memcache とコード アクセラレーションのための APC

4

2 に答える 2

19

Memcache は、APC や XCache などの分散オブジェクト キャッシュと比較して、PHP バイトコードをメモリに保存するため、毎回解析する必要がありません。それらの主な目的は異なります。

たとえば、ユーザーが頻繁に要求する CPU 集中型のデータベース クエリがある場合、そのクエリを常に再実行する代わりに、結果のオブジェクトを memcache にキャッシュし、それを参照することができます。

APC と XCache には同様のオブジェクト キャッシング機能がありますが、ホスト マシンに限定されます。サーバーごとにクエリをやり直すことなく、10 個の異なるサーバーすべてがその 1 つのオブジェクトにアクセスできるようにしたい場合はどうすればよいでしょうか? それらを memcache サーバーに転送するだけで済みます。サーバーが 1 つしかない場合でも、memcache を使用すると、将来、より多くのボックスに分岐する必要がある場合にスケーリングするのに役立つため、利点が得られます。

考慮すべき主な点は、アプリをスケーリングする必要があると思われるかどうかです。Memcache には、APC/Xcache 共有オブジェクトの単なる関数呼び出しと比較して、TCP 接続を使用してアクセスする必要があるため、より多くのオーバーヘッドがあります。

ただし、Memcache には次の利点があります。

  • ディスクまたは再実行クエリよりも高速です。
  • 複数のサーバーにスケーリングします。
  • 多くの異なる言語で動作し、オブジェクトは PHP + APC/Xcache のみにロックされません。
  • すべてのプロセス/言語は同じオブジェクトにアクセスできるため、PHP の子プロセスに空のオブジェクト キャッシュがあるかどうかを心配する必要はありません。ただし、PHP-FPM を実行している場合、これはそれほど大きな問題ではないかもしれません。

ほとんどの場合、オブジェクトを memcache にキャッシュすることをお勧めします。これはそれほど難しくなく、将来に向けてより柔軟であるためです。

これはオブジェクトのキャッシュに関するものであることに注意してください。Memcache にはバイトコードまたは PHP アクセラレーション機能がありませ。そのため、APC または Xcache と並行して実行します。

于 2009-12-20T08:38:14.523 に答える
4

はい、両方を同時に使用できます。

于 2009-12-20T08:30:02.203 に答える