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

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

Jul 20, 2016 am 11:09 AM
memcache memcached php そして インストール 応用 チュートリアル モジュール

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 以下私がインストールしたものです...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles