memcache の公式ホームページ: http://pecl.php.net/package/memcache
memcached の公式ホームページ: http://pecl.php.net/package/memcached
以下は、私のインストール手順の記録です。 PHP モジュールの Memcached バージョン:
wget http://download.tangent.org/libmemcached-0.48.tar.gz
tar zxf libmemcached-0.48.tar.gz
cd libmemcached-0.48
./configure --prefix= /usr/local/libmemcached - -with-memcached
make
make install
wget http://pecl.php.net/get/memcached-1.0.2.tgz
tar zxf memcached-1.0.2.tgz
cd memcached -1.0.2
/usr /local/webserver/php/bin/phpize
./configure --enable-memcached --with-php-c/local/webserver/php/bin/php-config --with-libmemcached -dir=/usr/local /libmemcached
make
make install
php.ini に
extension=memcached.so を追加
Complete
もう 1 つ:
libmemcached をインストールするとき、./configure のみを使用する場合、プロンプトが表示される場合があります:
memcached を確認中… no
configure : error: “memcached binary が見つかりませんでした”
2 つの使い方はほぼ同じです。
コードをコピーします コードは次のとおりです:
$mem = new Memcache;
$mem->addServer($memcachehost, '11211'); , '11212' ; md = 新しい Memcached;
$servers = array(
array($memcachehost, '11211')
$md->addServers($servers); );
$md ->set('hx','9enjoy');
memcached には getMulti、getByKey、 addServers などmemcached には memcache の connect メソッドがなく、現時点では長い接続をサポートしていません。 memcached はバイナリ プロトコルをサポートしていますが、memcache はサポートしていません。つまり、memcached の方がパフォーマンスが高くなります。 Memcache はネイティブに実装されており、OO インターフェイスと非 OO インターフェイスの両方の共存をサポートします。memcached は libmemcached を使用し、OO インターフェイスのみをサポートします。
より詳しい違い: http://code.google.com/p/memcached/wiki/PHPClientComparison memcached サーバーは集中型キャッシュ システムであり、分散実装方法はクライアントによって決定されます。
Memcached の分散アルゴリズムには通常 2 つのオプションがあります:
1. hash(key) の結果に従って、モジュラー接続番号の残りが格納されるノード、つまり hash(key)%sessions.size() によって決まります。アルゴリズムはシンプルで高速、優れたパフォーマンスです。ただし、このアルゴリズムには欠点があり、memcached ノードを追加または削除すると、元のキャッシュ データが大規模に無効になり、ノードやキャッシュ データが多数ある場合、ヒット率に大きな影響を与えます。キャッシュを再構築するコストが高すぎるため、2 番目のアルゴリズムを使用します。
2. Consistent Hashing、一貫したハッシュ アルゴリズム、そのノード検索プロセスは次のとおりです:
まず memcached サーバー (ノード) のハッシュ値を見つけ、0 から 232 までのサークル (連続体) 上に設定します。次に、同じ方法を使用して、データを保存しているキーのハッシュ値を見つけ、それをサークルにマッピングします。次に、データがマッピングされている場所から時計回りに検索し、最初に見つかったサーバーにデータを保存します。 2 の 32 乗を超えてもサーバーが見つからない場合は、最初の memcached サーバーに保存されます。
memcache は、設定を行わずに最初の方法を使用します。最初のメソッドを実装するために、memcached は (未確認) を使用するようです:
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);
2 番目の一貫したハッシュ アルゴリズム:
memcache in php.ini add
$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT); $md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC); setOption (Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT); $mem->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);
参考文献:
memcached 配布テストレポート (一貫性のあるハッシュの場合のハッシュ関数の選択):
http://www.iteye.com/topic/346682
php モジュール memcache と memcached の違い: http:// www.jb51.net/article/27366.htm
PHP モジュール: Memcached > Memcache: http://www.jb51.net/article/27367.htm
20110509@@UPDATE:
libmemcached をインストールすると、次のエラー メッセージ:
make[2]: *** [clients/ms_conn.o] エラー 1
make[2]: Leaving directory `/www/soft/libmemcached-0.48'
make[1]: *** [all-recursive] エラー 1
make[1]: ディレクトリ `/www/soft/libmemcached-0.48' を離れます
make: *** [all] エラー 2
--disable-64bit CFLAGS="-O3 を追加できます-march= whenconfigure i686"
つまり: ./configure --prefix=/usr/local/libmemcached --with-memcached --disable-64bit CFLAGS="-O3 -march=i686"
上記では、Memcached php の memcached クライアントである memcached を、Memcached のコンテンツを含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。