単一マシン モードredis
は非常に簡単で、単一ノードを起動するだけで済み、インストール プロセスには 5 分もかかりません。
redis-benchmark
、QPS
を介して単純なコマンドをテストすると、10w
以上に到達できます。これは非常に驚くべきことだと言わざるを得ません。
スタンドアロン モードの問題も非常に明白です。高可用性メカニズムが欠如しています。
redis
プロセスが停止した場合、プロセスは基盤となるデータベースにのみ侵入できるため、ビジネスにとって非常に危険です。 redis
をデータ ストレージとして使用する場合、状況はさらに深刻になり、データが失われる可能性もあります。
したがって、最も基本的な redis
デプロイメントでは、1 つ以上の スレーブ
(現在は レプリケーション
と呼ばれています) が追加されます。 )。
マスター redis
で問題が発生した場合、引き継ぐ スレーブ
を選択できます。
このモードが従来の MySQL
マスター/スレーブ モードと同じであるのは残念です。切り替えるのはさらに面倒で、 などの外部ツールの助けが必要です。 keepalived
やその他の支援により、切り替え、導入、メンテナンスの難易度が急上昇しました。
keepalived
は、VRRP
プロトコルに基づく高可用性ソリューションであり、IP ドリフトを通じて高可用性を実現します。説明からわかるように、ネットワーク管理者の参加が必要ですが、これは軽量の redis
とは対照的です。
Sentinel モードは、keepalived
の関数を置き換える追加のプロセスを使用して、redis
プロセスの実行可能性を判断します。セントリー モードでは、マスター ノードがダウンすると、スレーブ ノードがいつでもマスター ノードのバックアップとして復帰できます。
しかし、センチネル モードの最大の問題の 1 つは、センチネルが多すぎることであり、これには少なくとも 3 つのノードが必要です。
When arbitrated redis
, n/2 1
ノードは確認のために投票する必要があります。これは分散システム (クォーラム) の一般的な慣例でもあります。 Zookeeper
と同様に、奇数のセンチネル ノードを作成するのが非常に適切です。
センチネル モードは、センチネル モニター
設定を通じて複数のクラスターを同時に検出でき、クラスターの数が中程度の場合は比較的簡単に使用できます。
しかし、センチネル モードには多くの隠れた落とし穴があります。センチネルの起動などは、マスター
が生きている場合にのみ正常に実行できます。また、redis
設定 いくつかの危険なコマンドをブロックするためにファイル内で RENAME
が使用されている場合、Sentinel を起動できません。
クライアントが redis
に接続すると、redis
のインスタンスに直接接続できなくなります。取得するにはセンチネルからサークルを作成する必要があります。いくつかの変更情報。
クラスター モードは、ここでは最もエレガントな方法であると言えます。必要なのは、複数のピア redis
ノードをデプロイし、クライアント コマンドを使用してそれらをグループ化することだけです。
ip=192.169.0.23 ./bin/redis-cli --cluster create $ip:7001 $ip:7002 $ip:7003 $ip:7004 $ip:7005 $ip:7006 --cluster-replicas 1
これには多くのノードも必要で、通常は 6 つのノード、3 つのマスターと 3 つのスレーブを使用します。ノードの数が 10 を超えると、コラボレーションの柔軟性が低下するため、単一クラスターのストレージとパフォーマンスの制限にすぐに達します。
クラスター モードのいくつかの欠点は非常に隠されています。そのサーバー ノードは非常に安定していますが、一部のコマンドはパフォーマンスに重大な影響を与えます。たとえば、mget
、pipeline
などです。実行のためにリクエストを複数のノードに分散してから、それらを集約する必要があります。ノードの数が増えると、パフォーマンスが低下します。
以上がRedis クラスター モードとは何ですか?またその利点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。