Redisクラスターの3つのモード
1.マスタースレーブモード
永続化機能により、Redisはたとえサーバーは再起動されます) データ。永続化によりメモリ内のデータがハードディスクに保存され、再起動によりデータがハードディスクからロードされるためです。
ただし、データはサーバー上に保存されるため、サーバーにハードディスク障害などの問題が発生した場合、データの損失も発生します。単一障害点を回避するために、データベースの複数のコピーを複製し、それらを異なるサーバーに展開するのが一般的です。これにより、1 つのサーバーに障害が発生した場合でも、他のサーバーが引き続きサービスを提供できます。この目的のために、Redis は、あるデータベースのデータが更新されたときに、更新されたデータを他のデータベースに自動的に同期できるレプリケーション機能を提供します。
レプリケーションの概念では、データベースは 2 つのカテゴリに分類され、1 つはマスター データベース (マスター) で、もう 1 つはスレーブ データベース (スレーブ) です。マスター データベースは読み取りおよび書き込み操作を実行でき、書き込み操作によってデータが変更されると、データはスレーブ データベースに自動的に同期されます。スレーブ データベースは通常読み取り専用で、マスター データベースから同期されたデータを受け入れます。マスター データベースには複数のスレーブ データベースを含めることができますが、スレーブ データベースにはマスター データベースを 1 つだけ含めることができます。
マスター/スレーブデータベースの構成
マスターデータベースを構成する必要はありません。redis conf ファイルからスレーブデータベース情報をロードするか、redis-server --port 6380 --slaveof 127.0 を使用できます。起動時は.0.1 6379
スレーブ データベースは通常読み取り専用で、書き込み可能に変更できますが、書き込まれたデータはマスターによって簡単に同期できるため、引き続き読み取り専用にすることができます。
実行時にslaveof ip portコマンドを使用して、元のマスターを停止し、設定したばかりのマスターに切り替えることもできます。slaveofは自分自身をマスターに変えることはありません
データベースから開始する場合、データベースは同期コマンドを送信します。同期を受信すると、マスター データベースはバックグラウンドでスナップショット RDB の保存を開始します。スナップショットが完了すると、マスター データベースはキャッシュされます。スナップショットとキャッシュされたコマンドを一緒にスレーブに送信します。コピーの初期化が終了します。
以降、マスターがコマンドを受信するたびに、同期してスレーブに送信されます。 切断と再接続が発生した場合、2.8 以降のバージョンでは、切断中のコマンドが再接続データベースに渡されます。増分レプリケーションマスター/スレーブ レプリケーションは、クライアントが書き込み実行をマスターに送信すると、マスターは実行後すぐに結果をクライアントに返し、コマンドを非同期でスレーブに送信するため、パフォーマンスには影響しません。書き込み前に同期するスレーブ マスターの最小数を設定することもできます。 ハードディスクレスのレプリケーション: ハードディスクの効率が低い場合、レプリケーションのパフォーマンスに影響します。2.8 以降では、ハードディスクレスのレプリケーション、repl-diskless-sync を設定できます 2 番目、Sentinel。 メイン データベースでサービスの異常な中断が発生した場合、開発者はスレーブ データベースを手動で選択してマスター データベースにアップグレードし、システムがサービスを提供し続けることができます。ただし、プロセス全体は比較的煩雑で手動介入が必要なため、自動化が困難です。 この目的を達成するために、Redis 2.8 は、自動化されたシステム監視および障害回復機能を実装するためのセンチネル ツールを提供します。
センチネルの役割は、redis マスター データベースとスレーブ データベースが正常に実行されているかどうかを監視することです。マスターに障害が発生した場合、スレーブ データベースからマスター データベースに自動的に切り替わります。 例: 1 マスター 2 スレーブ 1 セントリーredis-server --port 6379
redis-server --port 6380 --slaveof 192.168.0.167 6379 redis-server --port 6381 --slaveof 192.168.0.167 6379Sentinel 設定ファイル Sentinel.conf Sentinel Monitor mymaster 192.168.0.167 6379 1ここでの 1 は 1 つの Sentinel を表します注:
inel でシステムを監視するには、必要なのはマスター データベースを監視するだけで、Sentinel はマスター データベースを複製するすべてのスレーブ データベースを自動的に検出します。このようにして、Sentinel はマスター 6379 とスレーブ 6380 および 6381 を監視できます。6379 が停止すると、Sentinel は 2 つのうちの 1 つを選択します。優先度に応じて選択します。同じ場合は、ID が小さい方を選択します。再度 6379 が表示されると、それがスレーブとして存在します。
クラスターを使用するには、各データベース ノードのクラスター有効構成をオンにするだけです。適切に機能するには、各クラスターに少なくとも 3 つのマスター データベースが必要です。 Sentinel を使用する場合でも、各 Redis インスタンスは完全に保存され、各 Redis に保存されているコンテンツは完全なデータであるため、メモリが無駄に消費され、バレル効果が発生します。メモリの使用を最大限に活用するために、分散ストレージであるクラスターを使用できます。つまり、各 Redis には異なるコンテンツが保存されます。
クラスターには少なくとも 3 つのマスターと 3 つのスレーブが必要で、各インスタンスは異なる構成ファイルを使用します。マスターとスレーブを構成する必要はなく、クラスターが自動的に選択します。 各インスタンスの構成ファイルを変更します:cluster-enabled yes -- クラスターを有効化します
cluster-config-file names-6382.conf -- クラスター構成ファイル名、
各インスタンスの構成は次のようにする必要がありますRedis はファイル名に基づいて新しいファイルを自動的に作成します
クラスターの操作
redisインストールディレクトリのsrc実行。/redis-trib.rb create --replicas 1
127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382
127。 0. 0 .1: 6383 127.0.0.1:6384 127.0.0.1:6385
ここでのマスター選挙は動物園の飼育員の選挙と似ています
関連知識の詳細については、PHP 中国語 Web サイトをご覧ください。 !
以上がRedis クラスターの 3 つのモードとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ホットトピック









