Redis シャーディング クラスター
Redis 3 は、複数の Redis インスタンスの協調サービスの問題を解決するための公式クラスター テクノロジーを正式に開始しました。 Redis Clusterは、サーバーサイドシャーディングテクノロジーを具現化したものと言え、一定のアルゴリズムに従って各インスタンスシャードにキー値を合理的に割り当て、同時に各インスタンスノードが連携・通信して共同で提供することを意味します。一貫した外部サービス。 (推奨学習: Redis ビデオ チュートリアル )
複数の Redis インスタンス サービスは、単一の Redis インスタンスよりもはるかに複雑であり、位置決め、コラボレーション、フォールト トレランス、および拡大。 。ここでは、軽量のクライアント側 Redis シャーディング テクノロジーを紹介します。
Redis Sharding は、Redis Cluster が登場する前に業界で一般的に使用されていたマルチ Redis インスタンスのクラスター手法であると言えます。 主なアイデアは、ハッシュ アルゴリズムを使用して Redis データのキーをハッシュすることであり、ハッシュ関数を通じて、特定のキーが特定の Redis ノードにマッピングされます。 このようにして、クライアントはどの Redis ノードでデータを操作するかを認識します。
幸いなことに、Java Redis クライアント ドライバー jedis はすでに Redis シャーディング機能、つまり ShardedJedis とキャッシュ プールと組み合わせた ShardedJedisPool をサポートしています。
Jedis の Redis Sharding 実装には、次の特徴があります。
一貫性のあるハッシュ アルゴリズム (一貫性のあるハッシュ) を使用して、キーとノード名を同時にハッシュします。次にマッピングとマッチングを実行します。使用されるアルゴリズムは MURMUR_HASH です。
単純なハッシュのようなモジュロ マッピングではなく一貫したハッシュを使用する主な理由は、ノードが追加または削減されたときに、再マッチングによる再ハッシュが発生しないことです。整合性ハッシュは隣接ノードのキー割り当てにのみ影響を与え、影響は小さいです。
一貫性のあるハッシュが隣接するノードにのみ影響を及ぼし、ノード割り当てのプレッシャーを引き起こすことを避けるために、ShardedJedis は各 Redis ノードの名前に従って 160 の仮想ノードを仮想化します (いいえ、Jedis はデフォルト名を割り当てます)。
重みに応じて、160 の倍数の仮想ノードも仮想化できます。マッピングのマッチングに仮想ノードを使用すると、Redis ノードを追加または削減するときに、隣接するノードのみが影響を受けるのではなく、Redis ノード間でキーをより均等に移動および分散できます。
ShardedJedis は、シャーディング用に keyTag の一部を抽出する keyTagPattern モードをサポートしています。このようにして、キーに適切な名前を付けることで、関連するキーのグループを同じ Redis ノードに配置でき、アクセスを回避できます。ノード間の関連データ非常に重要です。
以上がRedis でクラスターを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。