ホームページ > バックエンド開発 > PHPチュートリアル > php memcache と memcached モジュールのインストール application_PHP チュートリアル

php memcache と memcached モジュールのインストール application_PHP チュートリアル

WBOY
リリース: 2016-07-20 11:09:56
オリジナル
773 人が閲覧しました

memcache の公式ホームページ: phptutorial.net/package/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-config=/usr/local/webserver /php/ bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
make
make install

php.iniに
extension=memcached.soを追加
Complete

別:
libmemcachedをインストールするとき, ./configure のみを使用する場合は、次のメッセージが表示されることがあります:
checking for memcached… no
configure: error: “could not find memcached binary”


Memcached バージョンの PHP モジュールをインストールします

wget http:// download.tangent.org /libmemcached-0.35.tar.gz
tar zxf libmemcached-0.35.tar.gz
cd libmemcached-0.35
./configure
make
make install

wget http://pecl.php.net/ get/memcached-1.0 .0.tgz
tar zxf memcached-1.0.0.tgz
cd memcached-1.0.0
phpize
./configure
make
make install

php.ini を開いて次を追加します:

extension = "memcached.so"

次のコマンドで確認できます:

php -m | grep mem

Memcached バージョンの新機能をデモンストレーションします

まず、次のことを前提として問題を作成します。カウンタの初期値は整数です。インクリメントメソッドは使用せず、get/set を行うたびに 1 ずつインクリメントします。

Memcache バージョンでは、次のように続行することしかできません:

$m = new Memcache();
$m->addServer('localhost', 11211);
$v = $m- >get( 'counter');
$m->set('counter', $v + 1);

get/setの2つのアクションはアトムとして操作できないため、複数の処理を同時に処理する場合、紛失する可能性があり、さらに厄介なのは、いつ紛失するかわからないことです。

Memcached バージョンでそれを行う方法を見てみましょう:

$md = new Memcached();
$md->addServer('localhost', 11211);
$v = $md->get ( 'counter', null, $token)
$md->cas($token, 'counter', $v + 1);

cas は、端的に言うと Memcached 版で提供されている関数です。オプティミスティック ロック関数を使用して、$token の値を var_dump すると、$token が実際にはバージョン番号であることがわかります。get で取得した $token のバージョン番号が cas 中に一致しない場合は、他の操作が更新されたことを意味します。この時点では、cas 操作は失敗します。操作を続行する方法はあなた次第です。

注: 競合状況を手動で再現したい場合は、get と cas の間に数秒間スリープし、2 つのスクリプトをコピーして、順番に実行します。

ちなみに、Memcached バージョンモジュールの推奨ハッシュ設定は以下の通りです:

$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$md->setOption(Memcached:: OPT_HASH, Memcached::HASH_CRC);


この 2 つの使い方はほぼ同じです。
次のようにコードをコピーします:
$mem = new Memcache;
$mem->addServer($memcachehost, '11212'); > ;set('hx','9enjoy');
echo $mem->get('hx');

次のようにコードをコピーします。

$md = new Memcached

$servers = array(
array ($ memcachehost, '11211'),
array($memcachehost, '11212')
);
$md->addServers($servers); ;
echo $md->get('hx');

memcached には、getMulti、getByKey、addServers など、memcache よりも多くのメソッドがあります。
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 Add
Copy code php.ini を次のように編集します:
Memcache.hash_strategy =consistent
Memcache.hash_function =crc32

memcached がプログラムに追加されます (未確認)
コードを次のようにコピーします:
$md->setOption(Memcached: ;
$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
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

configure 時に --disable-64bit CFLAGS="-O3 -march=i686" を追加できます
つまり: ./configure --prefix=/usr/local/libmemcached --with-memcached --disable-64bit CFLAGS ="- O3 -march=i686"

分析

memcache:http://cn2.php.net/manual/en/book.memcache.php

memcached:http://cn2.php.net/manual /en/ book.memcached.php
2.Memcache はネイティブに実装され、OO インターフェイスと非 OO インターフェイスの共存をサポートします。 Memcached は libmemcached を使用し、OO インターフェイスのみをサポートします。

3. memcached のもう 1 つの非常に賞賛すべき点は、フラグが動作中に設定されず、統一された setOption() があることです。 Memcached は、memcached プロトコルの多くを実装します。

4.memcached はバイナリ プロトコルをサポートしていますが、memcache はサポートしていません。これは、memcached のパフォーマンスが高いことを意味します。ただし、me​​mcached は現在、長時間接続をサポートしていません。

以下に、PHP クライアント拡張機能の memcache と memcached を比較する表があります
http://code.google.com/p/memcached/wiki/PHPClientComparison

誰もがより懸念しているもう 1 つの点は、使用されているアルゴリズムです。 「一貫性のあるハッシュ アルゴリズム」は、ストレージ ノードの追加または削除時に memcached に保存されているデータへの影響が少ないアルゴリズムであることは誰もが知っています。このアルゴリズムは PHP の両方の拡張ライブラリで使用できますが、設定方法が異なります。

Memcache
php.ini を変更して次を追加します:

[Memcache]

Memcache.allow_failover = 1


Memcache.hash_strategy =consistent
Memcache.hash_function =crc32


またはPHP の ini_ セットメソッド:
Ini_set('memcache.hash_strategy','standard');
Ini_set('memcache.hash_function','crc32');

Memcached
$mem = new memcached();
$mem->setOption( Memcached:: OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);

$mem->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);



www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444767.html技術記事 memcache の公式ホームページ: phptutorial.net/package/memcache">http://pecl.php.net/package/memcache memcached の公式ホームページ: http://pecl.php.net/package/memcached 以下私がインストールしたものです...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート