ホームページ バックエンド開発 PHPチュートリアル Memcache 入門チュートリアル Memcache php キャッシュ技術_PHP チュートリアル

Memcache 入門チュートリアル Memcache php キャッシュ技術_PHP チュートリアル

Jul 20, 2016 am 11:07 AM
memcache php 入門チュートリアル テクノロジー はい とは キャッシュ プロジェクト

Memcache とは何ですか?
Memcache は、最初は LiveJournal を提供するために使用され、現在、世界中の多くの人々がこのキャッシュ プロジェクトを使用して、データベース チュートリアルの負荷を共有しています。
任意の数の接続を処理でき、ノンブロッキングのネットワーク 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 をインストールすることです
いわゆるクライアント側インストールは、PHP チュートリアル (または他のプログラム、Memcache、およびその他の優れた API インターフェイスを指します) Memcache が提供する機能を使用するには、PHP で拡張機能を追加する必要があります。

PHP の Memcache

次のようにコードをコピーします:
< ?php
//Connect

$mem = new Memcache;
//データを保存

$mem->set('key1', 'これは最初の値', 0, 60);

$val = $mem->get('key1');
echo "key1 の値を取得: " . $val ."
";
//データを置換

$mem->replace('key1', 'これは置換値です', 0, 60);
$val = $ mem->get('key1');
echo "key1 の値を取得します: " . $val . "
"
//arr = array('aaa', ' bbb', 'ccc', 'ddd');

$mem->set('key2', $arr, 0, 60);

$val2 = $mem->get('key2'); echo "key2 の値を取得: ";
echo "
"

$mem->delete('key1'); $ mem->get('key1');
echo "key1 値を取得: " . $val . "
"

$mem->flush() ;
$val2 = $mem->get('key2');

echo "key2 値を取得: ";

"; connection
$mem->close();
?>

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

key1 値の取得: これは最初の値です
key1 値の取得: これは置換値です
key2 値の取得: 配列( [0] => aaa [1] => bbb [2] => ccc [3] => ddd )
key1値の取得:
key2値の取得:

プログラムコード解析

Memcacheの初期化オブジェクト:

$mem = new Memcache;

Memcache サーバーに接続します。最初のパラメーターはサーバーの IP アドレスまたはホスト名です。

$ mem-> connect("192.168.0.200", 12000);

データを Memcache サーバーに保存します。最初のパラメーターは、データを見つけるために使用されます。2 番目のパラメーターは、必要なデータの内容です。 、ここは文字列です。3 番目のパラメータはマークで、通常は 0 または MEMCACHE_COMPRESSED に設定されます。4 番目のパラメータはデータの有効期間です。これは、この期間内であればデータが有効であることを意味します。渡された場合、このデータは Memcache サーバーによってクリアされます。単位は秒です。0 に設定すると、有効時間は 60 になります:
$mem->set ('key1', 'This is first value', 0, 60);

Memcache サーバーからデータを取得します。これはデータを取得するためのキーです。これは key1 に設定されています。このデータを取得した後、次のように出力します:

$val = $mem->get('key1');
echo "Get key1 value: "

次に、 replace メソッドを使用します。上記の key1 の値を置き換えます。 replace メソッドのパラメータは set と同じですが、最初のパラメータ key1 はデータ内容を置き換えるキーである必要があります:

$mem->replace ('key1', 'これは値を置き換えます', 0, 60);
$ val = $mem->get('key1');

echo "Get key1 value: " .配列を保存することもできます。以下は、Memcache に配列を保存してから、戻って出力します。

$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60); >get('key2');
print_r($val2);
次に、データの一部を削除します。delte インターフェイスを使用すると、Memcache サーバー内のこのキーのデータを削除できます。最終的な出力

$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " には結果はありません。 . "
";
最後に、Memcache サーバーに保存されているデータをすべてクリアすると、最終的に出力された key2 データが空になり、最後に接続が閉じられることがわかります。 mem->flush();

$val2 = $ mem->get('key2');

print_r($val2);

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

分散アプリケーション
Memcache は元々分散アプリケーションをサポートしていましたが、より良いサポートを提供するためにクライアントがわずかに変更されました。たとえば、ユーザーベースの Web サイトの場合、各ユーザーはユーザー ID を持っているため、固定 ID に従って抽出してアクセスできます。たとえば、1 で始まるユーザーは に保存されます。最初の 1 つの Memcache サーバーでは、2 で始まるユーザーのデータが 2 番目の Memcache サーバーに保存され、まずユーザー ID に従ってアクセス データが変換され、アクセスされます。


ただし、これにはユーザー ID の判断が必要になるという欠点があります。ビジネスに一貫性がない場合、または他の種類のアプリケーションがあまり適していない可能性がある場合は、実際のビジネスに基づいて検討するか、より適切なアプリケーションを考えることができます。方法。

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

私が検討している簡単な方法:

バックエンドデータベース操作モジュールは、すべての選択操作(更新/削除/挿入に関係なく)を抽出し、対応するSQLで対応するハッシュアルゴリズムを実行して、ハッシュデータキー( MD5 または SHA として)、Memcache でこのキーのデータを検索します。データが存在しない場合は、データがキャッシュに書き込まれていないことを意味し、データベースからデータを抽出します。データは配列クラス形式です。 、データを Memcache に設定します。キーはこの 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 サーバーは、イントラネット、1024MB のメモリを占有、最大 1024 の同時接続が可能

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

# iptables -F
# iptables -P INPUT DROP
# iptables -A INPUT -p tcp -s 192.168.0.2 –dport 11211 -j ACCEPT
# iptables -A INPUT -p udp -s 192.168.0.2 –dport 11 211 -j ACCEPT

上記の iptables ルールは、192.168.0.2 Web サーバーに Memcache サーバーへのアクセスのみを許可します。これに応じて、他のいくつかのルールを追加してセキュリティを強化することもできます。あなたのニーズに応じて。


www.bkjia.com本当http://www.bkjia.com/PHPjc/444929.html技術記事 Memcache とは何ですか? Memcache は最初に LiveJournal を提供するために使用されました。現在、世界中の多くの人がこのキャッシュ プロジェクトを使用して独自の負荷の高い Web サイトを配布しています。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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:28 PM

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

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 には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

See all articles