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 と並行して実行します。