eAccelerator と memcached は、PHP で使用できる最も主流なキャッシュ アクセラレーション ツールの 2 つです。
eAccelerator は PHP 用に特別に開発されていますが、memcached は PHP だけでなく、他のすべての言語でも使用できます。eAcceleratorの主な機能:
1. PHP ファイルの実行コードをキャッシュする: キャッシュされたコードが再度呼び出されるとき、メモリから直接読み取られるため、PHP の実行速度が大幅に低下します。
2. 共有メモリ操作機能を提供します: ユーザーは共通の非リソースオブジェクトをメモリに保存し、いつでも読み出すことができます。memcached の主な機能:
データの保存と読み込みのための共有メモリ操作機能を提供します
二人の共通点:
それらの共通点: それらはすべて、独自のデータの保存と読み取りに使用できる共有メモリ操作関数を提供します
2 つの違い:
eAccelerator は PHP の拡張ライブラリとして存在するため、PHP の実行中にのみ共有メモリを操作、読み書きすることができます。
共有メモリを操作するプログラムからのみ呼び出すことができます。同時に、eAccelerator は PHP プログラムの実行コードをキャッシュして、プログラムの読み込みと実行速度を向上させることができます。
Memcached は主に共有メモリ サーバーとして使用され、その PHP 拡張ライブラリは MySQL 拡張ライブラリと同様に、PHP から memcached への接続ライブラリとしてのみ存在します。そのため、memcached は PHP から完全に分離でき、その共有データはさまざまなプログラムによって呼び出されます2 つの違いに基づいて、本当に必要な場合に使用します。
eAccelerator は主にスタンドアロン PHP の高速化と中間データのキャッシュに使用され、リアルタイム性能は高いがデータ操作量が少ない場合に非常に実用的です。
Memcached は分散システムまたはクラスター システムで使用され、リアルタイム パフォーマンスが高く、データ操作の量が多い場合に非常に実用的です。
MemCached の正しい理解最初は、MemCached を使用してデータをメモリにキャッシュし、そのデータを操作する (ここでの操作にはクエリと更新が含まれます) と聞きましたが、それは非常に素晴らしいと思います。これにより、データベースを一定期間運用する必要がなくなります。それは素晴らしいことです。
次に、クエリは確かに可能ですが、メモリを更新するときに同時実行を処理するにはどうすればよいでしょうか? もしそうなら、それは素晴らしいことでしょう。
しかし、物事は言う通りにはなりません。 MemCached に対するこの理解は間違っています。
MemCacheも他のキャッシュと同様、データが更新されるとキャッシュされたアイテムも古いものになります。
オンラインで読みましたが、先輩たちの MemCached の説明がこの点を説明しています。
したがって、MemCached を直接更新してデータベースリンクを省略することは期待しないでください。
私は、彼が提供した set メソッドがデータベースの更新に使用されていると考えていました。
実はこの方法は、データベース内のレコードをMemCachedにキャッシュし、その有効期限を指定するというものです。
ここで、なぜレコードを削除したとしても、MemCached の内容が変わっていないのか考えてみました。
set() のときに有効期限を設定しなかったため、デフォルトは 0 で、これは有効期限が切れないことを意味します。 MemCached サーバーは、再起動しない限り、常に存在します。
このように、RORプロジェクトではキャッシュを利用してデータベースの取得を減らしていますが、MemCachedによってデータベースの更新が不要になることは期待できません。
本当にデータベースを更新する必要すらなくなったら、本当に非データベース時代に入ってしまいますね(笑)。おそらく可能性は低いでしょう。ユーザーが次々と列に並ぶようにできれば。
アップデートによるプレッシャーを軽減する別の方法をまだ探しています。
http://www.bkjia.com/PHPjc/486116.html
www.bkjia.com
true