この記事では、Redis パーティショニングを理解し、Redis パーティショニングが必要な理由、Redis パーティショニングの実装計画、および Redis パーティショニングの欠点を紹介します。
Redis はシングルスレッドですが、マルチコア CPU の使用率を改善するにはどうすればよいですか?
同じサーバー上に複数の Redis インスタンスをデプロイし、それらを異なるサーバーとして使用できます。いずれにしても 1 つのサーバーでは十分ではないため、複数の CPU を使用したい場合は、シャーディングを検討できます。 [関連する推奨事項: Redis ビデオ チュートリアル ]
Redis をパーティション分割する必要があるのはなぜですか?
パーティショニングにより、Redis はより大きなメモリを管理できるようになり、Redis はすべてのマシンのメモリを使用できるようになります。パーティションがないと、最大 1 台のマシンのメモリしか使用できません。パーティショニングを使用すると、コンピュータを追加するだけで Redis のコンピューティング能力を 2 倍にすることができ、コンピュータとネットワーク カードを追加すると Redis のネットワーク帯域幅も飛躍的に増加します。
Redis パーティション実装ソリューションとは何ですか?
1. クライアントのパーティショニングとは、データをどの Redis ノードに保存するか、またはどの Redis ノードから読み取るかをクライアントが決定することを意味します。ほとんどのクライアントはすでにクライアント側パーティショニングを実装しています。
2. エージェントのパーティショニングとは、クライアントがリクエストをエージェントに送信し、エージェントがデータの書き込みまたは読み取りのためにどのノードに移動するかを決定することを意味します。エージェントは、パーティション ルールに基づいてリクエストする Redis インスタンスを決定し、Redis 応答結果に基づいてクライアントにインスタンスを返します。 Redis と memcached のプロキシ実装は Twemproxy です。
3. クエリ ルーティング (クエリ ルーティング) とは、クライアントが任意の Redis インスタンスをランダムにリクエストし、Redis がそのリクエストを正しい Redis ノードに転送することを意味します。 Redis Cluster はハイブリッド形式のクエリ ルーティングを実装していますが、ある Redis ノードから別の Redis ノードにリクエストを直接転送するのではなく、クライアントの助けを借りて正しい Redis ノードに直接リダイレクトします。
Redis パーティショニングの欠点は何ですか?
1. 複数のキーを含む操作は、通常はサポートされていません。たとえば、2 つのコレクションは異なる Redis インスタンスに保存されている可能性があるため、それらを交差させることはできません (実際には、この状況を解決する方法はありますが、交差コマンドを直接使用することはできません)。
2. 複数のキーを同時に操作した場合、Redis トランザクションは使用できません。
3. パーティション分割の粒度が重要であるため、非常に大きなソート セットのような単一の巨大なキーでデータセットをシャーディングすることはできません)
4. パーティションを使用する場合、データ処理たとえば、バックアップの場合、異なる Redis インスタンスおよびホストから同時に RDB/AOF ファイルを収集する必要があります。
5. パーティショニング中の動的な拡張または縮小は非常に複雑になる場合があります。 Redis クラスターは、実行時に Redis ノードを追加または削除するため、ユーザーに対して最大限透過的なデータのリバランスを実現できますが、他の一部のクライアント パーティショニングまたはプロキシ パーティショニング方法では、この機能がサポートされていません。ただし、この問題をより適切に解決できるプレシャーディング テクノロジもあります。
プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !
以上がRedis パーティショニングが必要な理由は何ですか?実装オプションにはどのようなものがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。