web-dev-qa-db-ja.com

Memcache Vs. Memcached

可能性のある複製:
PHPでMemcacheとMemcachedを使用

誰かがPHP環境でMemcacheとMemcachedの違いを説明できますか?一方が他方より優れている点は何ですか?また、どちらかを選択するために使用される基準を提案できますか?

130
Luca Bernardi

(一部 ServerFaultから盗まれた

どちらも機能的には同じであると思いますが、作成者が異なるだけで、一方は他方よりも適切な名前が付けられています。


これは、質問の質問者によるフラストレーションを説明する、命名規則(なじみのない人向け)の簡単な背景です。ただし、インターフェースまたはクライアントアプリケーションは、デーモンの制御またはアクセスに使用します。ほとんどの場合、デーモンにはクライアントと同じ名前が付けられ、「d」という文字が追加されます。たとえば、「imap」は「imapd」デーモンに接続するクライアントになります。

この命名規則は、memcacheモジュールの概要を読むときにmemcacheによって明確に遵守されています(この抜粋でmemcacheとmemcachedの違いに注意してください)。

Memcacheモジュールは、特に動的Webアプリケーションのデータベース負荷を減らすように設計された、非常に効果的なmemcachedキャッシングデーモンへの便利な手続き型およびオブジェクト指向のインターフェイスを提供します。

Memcacheモジュールは、セッションハンドラー(memcache)も提供します。

Memcachedの詳細については、" http://www.danga.com/memcached/ をご覧ください。

ここでのフラストレーションは、memcachedと呼ばれる実際のデーモンと同じ名前を共有するため、PHP拡張機能の作成者がmemcachedという名前を誤って付けたことが原因です。また、memcached(phpモジュール)の概要で、memcachedデーモンにアクセスするためにモジュールで使用される共有ライブラリ(またはAPI)であるlibmemcachedについて言及していることに注意してください。

memcachedは、高性能の分散メモリオブジェクトキャッシングシステムであり、本質的に汎用ですが、データベースの負荷を軽減することで動的なWebアプリケーションを高速化することを目的としています。

この拡張機能はlibmemcachedライブラリを使用して、memcachedサーバーと通信するためのAPIを提供します。また、セッションハンドラー(memcached)も提供します。

Libmemcachedに関する情報は" http://tangent.org/552/libmemcached.html にあります。

111
Mez

それらは同一ではありません。 Memcacheは古いですが、いくつかの制限があります。キャッシュにリテラルFALSEを保存できないことに気付くまで、アプリケーションでうまく使用していました。キャッシュから返される値FALSEは、キャッシュに値が見つからない場合に返されるFALSEと同じです。どちらがどれであるかを確認する方法はありません。 Memcachedには、(特に)Memcached::getResultCodeという追加のメソッドがあり、キーが見つかったかどうかを通知します。

この制限のため、キャッシュにFALSEの代わりに空の配列を格納することに切り替えました。私はまだMemcacheを使用していますが、決定している人々のためにこの情報を公開したかっただけです。

136
Mike Starov