次のコラム Redis チュートリアル では、Redis の高い同時実行性を確保する方法を紹介します。
スタンドアロン Redis が 100,000 を超える QPS (通常は数万) を持つことはほとんど不可能です。
マシンのパフォーマンスが特に優れている、構成が特に高度である、物理マシンが適切に保守されている、全体的な操作がそれほど複雑でないなど、特別な状況がない限り。
Redis はマスター/スレーブ アーキテクチャを通じて読み取りと書き込みの分離を実現しており、マスター ノードはデータの書き込みと同期を担当します。スレーブ ノードが読み取りを担当するため、高い同時実行性が実現されます。
Redis は高い同時実行性を備えていますが、大量のデータ (1 つのマスターと複数のスレーブ) に対応する必要もあり、各インスタンスは完全なデータに対応します。 、redis マスター 10G のメモリでは、実際には 10G のデータしか保持できません。キャッシュが数十ギガバイト、さらには数百ギガバイト、あるいは数トンに達する大量のデータを収容する必要がある場合は、redis クラスターが必要です。redis クラスターを使用すると、1 秒あたり数十万のデータを提供できます。読み取りと書き込みを同時に実行します。
レプリケーションの中心的なメカニズム
Redis は非同期モードを使用してデータをただし、redis 2.8 以降、スレーブ ノードはコピーされるデータの量を毎回定期的に確認します。
マスター ノードは複数のスレーブ ノードで構成できます
スレーブ ノード 他のスレーブ ノードに接続することもできます。
スレーブ ノードがレプリケートするとき、マスター ノードの通常の作業をブロックしません。
スレーブ ノードがレプリケートするとき、レプリケートします。自身のクエリ操作はブロックされません。古いデータ セットを使用してサービスを提供します。ただし、コピーが完了したら、古いデータ セットを削除し、新しいデータ セットをロードする必要があります。このとき、外部サービスは
スレーブ ノードは主に水平方向の拡張と読み取りと書き込みの分離に使用され、拡張されたスレーブ ノードにより読み取りスループットが向上します。
## マスター/スレーブ アーキテクチャのセキュリティにおけるマスター永続性の重要性
スレーブ ノードをマスター ノードのデータ ホット バックアップとして使用することはお勧めできません。その場合、マスターの永続性をオフにすると、データが失われる可能性があります。マスターがクラッシュして再起動すると空になるため、スレーブ ノードのデータはコピーされるとすぐに失われる可能性があります。
次に、マスターに対してさまざまなバックアップ計画を実行しますか?すべてのローカル ファイルが失われた場合に備えて、バックアップから rdb を選択してマスターを復元します。これにより、マスターの起動時にデータが存在することが保証されます。
マスターがスレーブにデータを同期するプロセス
スレーブ ノードを起動すると、マスターに PSYNC コマンドが送信されます。ノード
# これがマスター ノードに再接続するスレーブ ノードである場合、マスター ノードは欠落したデータのみをスレーブにコピーします。それ以外の場合、スレーブ ノードがマスター ノードに接続する場合は、初めて完全再同期がトリガーされます完全再同期を開始すると、マスターはバックグラウンド スレッドを開始し、RDB スナップショット ファイルの生成を開始します。クライアントから受信したコマンドはメモリにキャッシュされます。
RDB ファイルが生成された後、マスターは RDB をスレーブに送信し、スレーブはまずローカル ディスクに RDB を書き込み、次にローカル ディスクからメモリにロードします。 。次に、マスターはメモリにキャッシュされた書き込みコマンドをスレーブに送信し、スレーブもデータを同期します。
スレーブ ノードがマスター ノードとのネットワーク障害により切断された場合、自動的に再接続されます。マスターは、複数のスレーブ ノードが再接続していることを検出した場合、rdb 保存操作のみを開始し、データのコピーを使用してすべてのスレーブ ノードにサービスを提供します。
マスター/スレーブ レプリケーションのブレークポイントを再開します
Redis 2.8 以降、マスター/スレーブ レプリケーションのブレークポイント再開がサポートされています。マスター/スレーブ レプリケーション プロセス中にネットワーク接続が切断された場合でも、レプリケーションを作成する代わりに、最後のレプリケーション ポイントからレプリケーションを続行できます。最初からコピー
マスター ノードはメモリ内にバックログを持ちます。マスターとスレーブの両方がレプリカ オフセットとマスター ID を保存します。オフセットはバックログに保存されます。
マスターとスレーブの間のネットワーク接続が切断された場合、スレーブはマスターに最後のレプリカ オフセット
からレプリケーションを継続させます。しかし、一致しない場合は、対応するオフセットが見つかった場合、再同期が実行されます。
ディスクレス コピー
マスターは、再同期を実行します。メモリに直接配置する rdb を作成してスレーブに送信する ディスクはローカルに配置されません
# repl-diskless-sync
repl-ディスクレス同期遅延、より多くのスレーブが再接続するまで待つ必要があるため、レプリケーションを開始する前に一定時間待機します
期限切れのキーの処理
スレーブ キーは期限切れになりませんが、マスターがキーを期限切れにするまで待機します。
マスターがキーを期限切れにした場合、または LRU を通じてキーを削除した場合、del コマンドがシミュレートされてスレーブに送信されます。
レプリケーションの完全なプロセス
スレーブ ノードが起動し、情報のみが保存されます。マスターノードのホストとIP (redis.confのslaveofで構成)を含むマスターノードの情報ですが、レプリケーションプロセスは開始されていません。
内部にスケジュールされたタスクがあります。新しいデータがあるかどうかを毎秒チェックするスレーブ ノード マスター ノードは接続して複製する必要があります。見つかった場合は、マスター ノードとのソケット ネットワーク接続が確立されます。
スレーブ ノードは、マスター ノードへの ping コマンド
マスターの場合のパスワード認証 requirepass が設定されている場合、スレーブ ノードは認証のために masterauth パスワードを送信する必要があります
マスター ノードは次のことを実行します。初めて完全なレプリケーションを実行し、すべてのデータをスレーブ ノードに送信します。
マスター ノードは引き続きコマンドを書き込み、それをスレーブ ノードに非同期にコピーします。
データ同期に関連するコアメカニズム
##とは、つまり、スレーブが初めて msater に接続するときに、完全なコピーが実行されることを指します。そのプロセスには、いくつかの詳細なメカニズムがあります。
# (1) マスターとスレーブの両方がオフセットを維持しますマスターは継続的に蓄積します。スレーブは自身のオフセットを継続的に蓄積します。
スレーブは自身のオフセットを毎秒マスターに報告し、マスターは各スレーブのオフセットも保存します
(2) バックログ
マスターノードにはバックログがあり、デフォルトのサイズは 1MB
マスター ノードがスレーブ ノードにデータをコピーすると、バックログにもデータのコピーが同期的に書き込まれます。
バックログは主に、完全レプリケーションが中断された場合の増分コピーに使用されます
情報サーバーでは、マスター実行 ID
を確認できます。ホスト IP に基づいてマスター ノードを見つけます。はい、信頼性がありません。マスター ノードが再起動するかデータが変更された場合、スレーブ ノードは異なる実行 ID に従って区別される必要があります。実行 ID が異なる場合は、完全なコピーを作成してください
run id を変更せずに redis を再起動する必要がある場合は、redis-cli デバッグ リロード コマンド
を使用できます。
スレーブ ノードは、psync を使用してマスター ノードからコピーします (psync runid offset) マスター ノードは、自身の状況に応じて応答情報を返します。フル コピーをトリガーするか、CONTINUE で増分コピーをトリガーします。
マスターは bgsave を実行し、ローカルで rdb スナップショット ファイルを生成します。 完全コピーが進行中の場合、マスター - スレーブのネットワーク接続が切断された場合、スレーブがマスターに再接続すると、増分レプリケーションがトリガーされます マスターは、失われたデータの一部を自身のバックログから直接取得し、スレーブ ノードに送信します。デフォルトのバックログは 1MB です # マスターはデフォルトで 10 秒ごとにハートビートを送信し、スレーブ ノードは 1 秒ごとにハートビートを送信します 非同期レプリケーション マスターは書き込みコマンドを受信するたびに、内部でデータを書き込み、それをスレーブ ノードに非同期で送信します
マスター ノードは、rdb スナップショット ファイルをスレーブ ノードに送信します。 rdb コピー時間が 60 秒を超える場合 (repl -timeout) を指定すると、スレーブ ノードはコピーが失敗したと判断し、このパラメータを適切に調整できます。
ギガビット ネットワーク カードを搭載したマシンの場合、通常、1 秒あたり 100MB、6G のファイルが転送されます。 60 秒を超える可能性があります
マスター ノードが rdb を生成すると、すべての新しい書き込みコマンドがメモリにキャッシュされます。スレーブ ノードが rdb を保存した後、新しい書き込みコマンドをsalve node
client-output-buffer-limit smile 256MB 64MB 60. レプリケーション中にメモリ バッファが 64MB を超えて消費し続けるか、一度に 256MB を超える場合、レプリケーションは停止し、
スレーブ ノードは rdb 後、自身の古いデータをクリアし、rdb を自身のメモリにリロードし、同時に古いデータ バージョンに基づいて外部サービスを提供します
スレーブ ノードが AOF をオンにすると、BGREWRITEAOF がすぐに実行されます。 copy
heartbeat
以上がRedis の高い同時実行性を確保する方法をご存知ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Redisは、データベース、キャッシュ、メッセージブローカーとして使用されるオープンソースメモリデータ構造ストレージであり、高速応答と高い並行性が必要なシナリオに適しています。 1.Redisはメモリを使用してデータを保存し、マイクロ秒の読み取り速度と書き込み速度を提供します。 2.文字列、リスト、コレクションなどのさまざまなデータ構造をサポートします。3。Redisは、RDBおよびAOFメカニズムを介してデータの持続性を実現します。 4.シングルスレッドモデルと多重化テクノロジーを使用して、リクエストを効率的に処理します。 5.パフォーマンス最適化戦略には、LRUアルゴリズムとクラスターモードが含まれます。

Redisの関数には、主にキャッシュ、セッション管理、その他の機能が含まれます。1)キャッシュ関数はメモリを介してデータを保存して読み取り速度を向上させ、eコマースWebサイトなどの高周波アクセスシナリオに適しています。 2)セッション管理関数は、分散システムでセッションデータを共有し、有効期限のあるメカニズムを通じて自動的にクレンジングします。 3)リアルタイムメッセージプッシュおよびマルチスレッドシステムおよびその他のシナリオに適した、パブリッシュサブスクライブモード、分散ロック、カウンターなどのその他の機能。

Redisのコア関数には、メモリストレージと持続性メカニズムが含まれます。 1)メモリストレージは、高性能アプリケーションに適した非常に高速な読み取り速度と書き込み速度を提供します。 2)永続性は、RDBとAOFによってデータが失われないことを保証し、選択はアプリケーションのニーズに基づいています。

redis'sserver-sideoperations offferidions and forexuctingcomplexoperationsontheserver.1)機能を調整することで、javascript、orredis'sscriptinglanguage、infulancingscalabilityandmantenmention

redisisbothadatabaseandaserver.1)asadatabase、itusesin memorystorage forfastaccess、理想的なforreal-timeapplicationsandcaching.2)asaserver、itupportspub/submessagingandaging andluascriptingforreal-communicationandserver-sideoperation。

Redisは、高性能と柔軟性を提供するNOSQLデータベースです。 1)大規模データと高い並行性の処理に適したキー価値ペアを介してデータを保存します。 2)メモリストレージとシングルスレッドモデルは、速い読み取りと書き込みと原子性を確保します。 3)RDBおよびAOFメカニズムを使用してデータを持続し、高可用性とスケールアウトをサポートします。

Redisは、主にデータベース、キャッシュ、メッセージブローカーとして使用されるメモリデータ構造ストレージシステムです。そのコア機能には、シングルスレッドモデル、I/O多重化、持続メカニズム、複製、クラスタリング機能が含まれます。 Redisは、キャッシュ、セッションストレージ、メッセージキューのための実際のアプリケーションで一般的に使用されます。適切なデータ構造を選択し、パイプラインとトランザクションを使用し、監視とチューニングを使用することにより、パフォーマンスを大幅に改善できます。

RedisデータベースとSQLデータベースの主な違いは、Redisが高性能および柔軟性要件に適したインメモリデータベースであることです。 SQLデータベースは、複雑なクエリとデータの一貫性要件に適したリレーショナルデータベースです。具体的には、1)Redisは高速データアクセスとキャッシュサービスを提供し、キャッシュおよびリアルタイムのデータ処理に適した複数のデータ型をサポートします。 2)SQLデータベースは、テーブル構造を介してデータを管理し、複雑なクエリとトランザクション処理をサポートし、データの一貫性を必要とするeコマースや金融システムなどのシナリオに適しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

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

ホットトピック









