1. ホーム
  2. php

[解決済み】Memcachedの代わりにMemcacheを使用するのはどんな場合ですか?

2022-03-26 06:47:40

質問

PHPには、2つのmemcachedライブラリがあるようです。 memcache メムキャッシュ . 何が違うのか、また、どれを使えばいいのか、どのように判断すればいいのでしょうか?どちらかが古いのでしょうか?memcachedはより多くのメソッドを提供しているようなので、最も開発が進んでいるということでしょう。 外部 C/C++ ライブラリ ということで、インストールできるかどうかわかりません。

memcacheの方が歴史が長いようで、追加のライブラリを必要とせず、また プリコンパイルされたバイナリ をWindowsでも使えるようにしました。今のところ、そちらの方が良いのではと思います。しかし、memcached(サーバー)初心者なので、memcached(php)に何か超重要な機能があって、余計な手間をかける価値があるのかどうか、よくわからないのです。

解決方法は?

Memcachedクライアント ライブラリは、つい最近安定版としてリリースされました。このライブラリは ディグ (これは Andrei Zmievski によって digg のために開発されましたが、現在は digg にはいません) そして、さらに多くの memcachedプロトコル 古いmemcacheクライアントよりも。memcachedが持つ最も重要な機能は以下の通りです。

  1. キャストークン . これは私の生活をずっと楽にしてくれましたし、古いデータを簡単に防止するシステムでもあります。キャッシュから何かを取り出すときはいつでも、casトークン(2つの数字)を一緒に受け取ることができます。そのトークンを使って、更新したオブジェクトを保存することができます。もし、あなたのスレッドが実行されている間、誰もその値を更新していなければ、交換は成功します。そうでない場合は、より新しい cas トークンが作成され、データを再ロードし、新しいトークンで再度保存することを余儀なくされます。
  2. 読み上げ コールバック は、スライスされたパン以来の最高のものです。私のコードの多くを簡略化してくれました。
  3. getDelayed() は、スクリプトがサーバーから結果が戻ってくるのを待つ時間を短縮することができるすばらしい機能です。
  4. memcachedサーバーは非常に安定しているはずですが、最速というわけではありません。新しいクライアントでは、ASCII の代わりにバイナリプロトコルを使用することができます。
  5. 複雑なデータをmemcachedに保存する場合、以前はクライアントが常に値のシリアライズを行っていました (これは遅いです)。 イグバイナリ . 今のところ、これがどの程度パフォーマンスを向上させることができるのか試す機会がありません。

これらの点から、私は最新のクライアントに乗り換え、魅力的に動作することをお伝えします。への外部依存があります。 libmemcached しかし、それでもUbuntuとMac OSXにインストールできたので、今のところ問題はない。

もし、新しいライブラリにアップデートするのであれば、最新のサーバーバージョンにもアップデートすることをお勧めします。次のものをインストールする必要があります。 libevent が、Ubuntuでは、それほど問題なくコンパイルできました。

今のところ、どのフレームワークも新しい memcached クライアントをピックアップしているのを見たことがありません (追跡しているわけではないのですが)。 ゼンド が間もなく搭載されるでしょう。

アップデイト

Zend Framework 2 には、Memcached 用のアダプタがあり、以下の場所にあります。 こちら