web-dev-qa-db-ja.com

Memcachedの代わりにMemcacheを使用する必要があるのはいつですか?

PHPには memcache および memcached という名前の2つのmemcachedライブラリがあるようです。違いは何ですか?どの方法を使用すればよいですか?古いものはありますか? memcachedはより多くのメソッドを提供しているようですので、最も開発が進んだことを意味しますが、 外部C/C++ライブラリ も必要と思われるので、インストールできるかどうかわかりません。

Memcacheは以前よりも長く、追加のライブラリを必要とせず、 プリコンパイルされたバイナリ が偶数のウィンドウでもあるようです!今のところ、それがより良い選択だと思います。しかし、memcached(サーバー)が初めてなので、memcached(php)に追加のトラブルに見合うだけの価値のある非常に重要な機能があるかどうかわかりません。

316
Xeoncross

Memcached client ライブラリは最近安定版としてリリースされました。 diggによって使用されています(Andrei Zmievskiによってdigg用に開発され、現在はdiggを使用していません)。さらに多くの memcached protocol より古いmemcacheクライアントより。 memcachedの最も重要な機能は次のとおりです。

  1. Casトークン 。これにより私の生活がずっと楽になり、古いデータの簡単な予防システムになりました。キャッシュから何かをプルするたびに、casトークン(二重の数字)を受け取ることができます。そのトークンを使用して、更新されたオブジェクトを保存できます。スレッドの実行中に誰も値を更新しなかった場合、スワップは成功します。そうでない場合は、新しいcasトークンが作成され、データをリロードして、新しいトークンで再度保存する必要があります。
  2. 読み通す コールバック は、パンをスライスしたので最高のものです。それは私のコードの大部分を単純化しました。
  3. getDelayed() は、結果がサーバーから返されるまでスクリプトが待機する時間を短縮できる素晴らしい機能です。
  4. Memcachedサーバーは非常に安定しているはずですが、最速ではありません。新しいクライアントでは、ASCIIの代わりにバイナリプロトコルを使用できます。
  5. 複雑なデータをmemcachedに保存するたびに、クライアントは常に値のシリアル化を実行していましたが(これは遅いですが)、memcachedクライアントでは igbinary を使用するオプションがあります。これまでのところ、どれだけパフォーマンスが向上するかをテストする機会はありませんでした。

この点はすべて、私が最新のクライアントに切り替えるのに十分であり、それが魅力のように機能することを伝えることができます。 libmemcached ライブラリには外部依存関係がありますが、それでもUbuntuとMac OSXにインストールできているので、今のところ問題はありません。

新しいライブラリに更新する場合は、最新のサーバーバージョンに更新することをお勧めします。同様に、いくつかの素晴らしい機能も備えています。コンパイルするために libevent をインストールする必要がありますが、Ubuntuではそれほど面倒ではありませんでした。

これまでのところ、新しいmemcachedクライアントをフレームワークがピックアップするのを見たことはありません(ただし、それらを追跡しません)が、まもなく Zend が搭載されると思われます。

更新

Zend Framework 2にはMemcached用のアダプターがあり、これは here にあります

245
Miha Hribar

Windowsを使用している場合、比較は短縮されます:memcacheが唯一の利用可能なクライアントのようです。

11
rymo

これは2013年です。2009年のコメントを忘れてください。同様に、深刻なトラフィック負荷を実行している場合は、Windowsベースのmemcacheで実行する方法も考慮しないでください。非常に大規模(500以上のフロントエンドWebサーバー)と20以上のバックエンドデータベースサーバーおよびレプリカント(mysqlとmssqlの混合)を扱う場合、memcachedサーバーのファーム(グループ内の12サーバー)は複数の大容量OLTP 25K〜40K mcに応答するアプリケーションmc-> 1秒あたりの呼び出しを取得します。これらの呼び出しは、ではなくがデータベースに到達する必要がある呼び出しです。

私見、このmemcachedの使用は、新しいDBサーバーとライセンスのCAPEXと大規模な商業デザインのサポート契約で$$$、$$$の大幅な節約を提供しました。

9
Mike Trest

Memcachedは新しいAPIであり、memcachedをセッションプロバイダーとして提供します。これは、サーバーファームがある場合に最適です。

バージョンはまだ0.2ですが、私は両方を使用しましたが、大きな問題は発生しなかったので、新しいのでmemcachedに行きます。

7
RageZ