ホームページ  >  記事  >  バックエンド開発  >  PHP 環境での Memcache のインストールと使用、phpmemcache_PHP チュートリアル

PHP 環境での Memcache のインストールと使用、phpmemcache_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 09:05:27872ブラウズ

PHP 環境での Memcache のインストールと使用、phpmemcache

Memcache は danga.com のプロジェクトであり、現在、世界中の多くの人々がこのキャッシュ プロジェクトを使用して独自の大容量 Web サイトを構築しています。データベースに対するプレッシャーを共有します。任意の数の接続を処理でき、ノンブロッキング ネットワーク IO を使用します。 Memcached の動作メカニズムは、メモリ内のスペースを開いて HashTable を作成することであるため、Memcached はこれらの HashTable を独自に管理します。 Memcache 公式 Web サイト: http://www.danga.com/memcached、詳細情報はここでご覧いただけます。

Memcache と memcached という 2 つの名前があるのはなぜですか?実際、Memcache はこのプロジェクトの名前であり、memcached はサーバー側のメイン プログラム ファイルの名前です。 1 つはプロジェクト名で、もう 1 つはメイン プログラムのファイル名です。インターネット上では理解できず、これらを同じ意味で使用している人がたくさんいました。

Memcacheのインストール

これは、memcache サーバーのインストールと memcached クライアントのインストールの 2 つのプロセスに分かれています。
いわゆるサーバー側インストールでは、データを保存するためにサーバー (通常は Linux システム) に Memcache をインストールします。
いわゆるクライアント インストールとは、サーバー側で Memcache が提供する機能を使用するための PHP (または他のプログラム、Memcache には他の優れた API インターフェイスも提供されています) を指します。これには、PHP で拡張機能を追加する必要があります。

PHP 用 Memcache

リーリー

正常であれば、ブラウザは次のように出力します:

キー値の取得: これが最初の値です
キー値の取得: これは置換値です
キー値の取得: Array ( [] => aaa [] => bbb [] => ccc [] => ddd )
キー値を取得:
キー値を取得:

プログラムコード解析

Memcache オブジェクトを初期化します: $mem = new Memcache;
Memcache サーバーに接続します。最初のパラメーターはサーバーの IP アドレスで、2 番目のパラメーターは Memcache のオープン ポートです: $mem->connect("192.168.0.200", 12000) ;

データを Memcache サーバーに保存します。最初のパラメータはデータのキーであり、2 番目のパラメータは保存する必要があるデータの内容です。通常は 0 または MEMCACHE_COMPRESSED に設定します。これは、データがこの期間内に有効であることを意味します。単位は秒です。設定されている場合、0 の場合は永久に有効になります。ここでは 1 分間有効となる 60 を設定しています。 $mem->set('key1', 'This is first value', 0, 60);

Memcache サーバーからデータを取得します。これには、データを取得するためのキーとなるパラメーターが 1 つだけあります。このデータを取得した後、出力を出力します。 リーリー

ここで、replace メソッドを使用して、上記の key1 の値を置き換えます。replace メソッドのパラメータは設定されたものと同じですが、最初のパラメータ key1 は、データの内容を置き換えるキーである必要があります。

リーリー

同様に、Memcache も配列を保存できます。以下は Memcache に保存され、取得されて出力される配列です。 リーリー

ここでデータを削除し、delte インターフェイスを使用します。パラメータはキーです。その後、Memcache サーバー内のキーのデータを削除できます。最終的な出力には結果はありません。 リーリー

最後に、Memcache サーバーに保存されているすべてのデータをクリアすると、データがなくなっていることがわかり、最終的に出力された key2 データが空になり、最後に接続が閉じられます。 リーリー

Memcacheの使用法

Memcache を使用する Web サイトは、一般的に比較的大きなトラフィックを伴います。データベースへの負荷を軽減するために、Memcache は、フロントエンドで高速にアクセスできるように、情報の一部をメモリに保存するキャッシュ領域として使用されます。したがって、一般的な焦点は、データベースの負荷をどのように共有して分散するかということです。結局のところ、単一の Memcache のメモリ容量には限界があります。ここでは私の個人的な意見を述べているだけであり、実践したわけではないので、参考としてのみ使用してください。

分散アプリケーション

Memcache はもともと分散配布をサポートしていますが、より良いサポートを提供するためにクライアントがわずかに変更されました。たとえば、ユーザーベースの Web サイトの場合、各ユーザーはユーザー ID を持っているため、固定 ID に従って抽出してアクセスできます。たとえば、1 で始まるユーザーは に保存されます。最初の 1 つの Memcache サーバーでは、2 で始まるユーザーのデータが 2 番目の Memcache サーバーに保存され、まずユーザー ID に従ってアクセス データが変換され、アクセスされます。 ただし、これにはユーザー ID を判断する必要があるという欠点があります。ビジネスに一貫性がない場合、または他の種類のアプリケーションがあまり適していない可能性がある場合は、実際のビジネスに基づいて検討するか、より適切な方法を考えることができます。

データベースの負荷を軽減します

これはさらに重要で、基本的にすべてのデータがデータベースに頻繁にアクセスされると、データベースのパフォーマンスが大幅に低下し、同時により多くのユーザーにサービスを提供できなくなります。 .table を使用して、Memcache にデータベースへの負荷を分散させます。変更が比較的小さく、フロントエンドへの大規模な変更を必要としない方法で、現在のアーキテクチャを変更する方法が必要です。

私が考えた簡単な方法:

バックエンドのデータベース操作モジュールは、すべての選択操作 (更新/削除/挿入に関係なく) を抽出し、対応する SQL で対応するハッシュ アルゴリズムを実行してハッシュ データ キー (MD5 や SHA など) を計算し、これを配置します。キーは Memcache 内のデータを検索します。データが存在しない場合は、データがデータベースから抽出され、そのデータが Memcache に設定されます。 key は SQL のハッシュ値であり、それに応じて有効期限を 1 時間などに設定すると、1 時間以内にデータがキャッシュから抽出され、データベースへの負荷が効果的に軽減されます。欠点は、データがリアルタイムではないことです。データが変更されると、フロントエンドでリアルタイムに表示できなくなり、結局のところ、それぞれのデータの量が大量に占有される可能性があります。これは考慮する必要がある要素です。

Memcache セキュリティ

上記の Memcache サーバーは、検証プロセスを経ずにクライアント接続を通じて直接動作します。サーバーが直接インターネットに公開されると、少なくともデータが漏洩し、関係のない他の人に閲覧される可能性があり、最悪の場合、より危険です。 Mecache が root 権限で実行されているため、サーバーに侵入されました。未知のバグやバッファ オーバーフローが存在する可能性があります。これらは私たちには未知であるため、危険は予見できます。セキュリティの観点から、ハッカーの侵入やデータ漏洩を少しでも防ぐことができる提案を 2 つさせていただきます。

イントラネット アクセス

2 つのサーバー間 (通常は Web サーバーと Memcache サーバー間) でイントラネット アクセスを使用するのが最善です。一般的なサーバーには 2 つのネットワーク カードがあり、1 つはインターネットを指し、もう 1 つはイントラネットを指します。次に、Web サーバーがイントラネット ネットワーク カードを介して Memcache サーバーにアクセスできるようにし、Memcache サーバーの IP アドレスと IP アドレスを監視します。イントラネットのポートとイントラネット アクセスにより、他の不正アクセスを効果的に防止できます。

# memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -P /tmp/memcached.pid

Memcache サーバーは、イントラネット上の 192.168.0.200 IP の 11211 ポートをリッスンするように設定されており、1024 MB のメモリを占有して、最大 1024 の同時接続を許可します。

ファイアウォールを設定する

ファイアウォールはシンプルで効果的な方法です。両方のサーバーがインターネットに接続されており、外部 IP 経由で Memcache にアクセスする必要がある場合は、不正なアクセスをフィルタリングするためにファイアウォールまたはプロキシ プログラムの使用を検討できます。一般に、Linux では、FreeBSD で iptables または ipfw を使用して、一部の不正アクセスを防止するルールを指定できます。たとえば、Web サーバーに Memcache サーバーへのアクセスのみを許可し、他のアクセスをブロックするように設定できます。

# iptables -F
# iptables -P 入力ドロップ
# iptables -A INPUT -p tcp -s ... –dport -j ACCEPT
# iptables -A INPUT -p udp -s ... –dport -j ACCEPT

上記の iptables ルールは、192.168.0.2 Web サーバーのみが Memcache サーバーへのアクセスを許可するため、一部の不正アクセスを効果的に防止できます。これに応じて、セキュリティを強化するために他のルールを追加することもできます。する。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1068828.html技術記事 PHP 環境での Memcache のインストールと使用、phpmemcache Memcache は danga.com のプロジェクトであり、現在、世界中の多くの人々がこのキャッシュ プロジェクトを使用して構築しています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。