Redis クラスターでのデータ シャーディングの仕組みは次のとおりです。
Redis クラスターのシャーディング
Redis Cluster は、組み込みのシャーディング メカニズムを使用して、複数の Redis ノード間でデータを自動的に分割します。これがどのように機能するかについての重要な側面は次のとおりです。
1. キースペースのパーティション化: Redis クラスター内のキースペース全体は 16,384 のハッシュ スロットに分割されます。これらのハッシュ スロットは、クラスター全体にデータを分散する役割を果たします。
2. ハッシュ スロットの割り当て: クラスター内の各 Redis ノードには、16,384 のハッシュ スロットのサブセットが割り当てられます。ノードへのハッシュ スロットの割り当ては、ハッシュ関数を通じて行われます。
3. データ配置: クライアントがキーと値のペアを保存したい場合、クライアントは事前定義されたハッシュ関数を使用してキーのハッシュ値を計算します。このハッシュ値は、16,384 のハッシュ スロットの 1 つにマッピングされます。その後、データは、そのハッシュ スロットを所有する Redis ノードに保存されます。
4. レプリケーション: ハッシュ スロットごとに、読み取り/書き込みリクエストの処理を担当するプライマリ ノードがあります。さらに、高可用性を実現するためにデータのコピーを維持する 1 つ以上のレプリカ ノードがあります。
5. 自動リシャーディング: クラスターにノードが追加またはクラスターから削除されると、ハッシュ スロットの割り当てが自動的に再バランスされ、クラスター全体でデータと負荷が均等に分散されます。
Redis クラスター シャーディングの利点
1. スケーラビリティ: データを複数のノードに分散することにより、Redis Cluster は大量のデータと高スループットを処理できるように拡張できます。
2. 高可用性: プライマリ ノードとレプリカ ノード間でのハッシュ スロットのレプリケーションにより、一部のノードに障害が発生してもクライアントはデータにアクセスし続けることができるため、高可用性が確保されます。
3. 透過的なクライアント アクセス: ハッシュ スロット マッピングは Redis クラスターによって透過的に処理されるため、クライアントは基盤となるシャーディングの詳細を知らなくてもデータにアクセスできます。
4. 自動管理: Redis Cluster は、クラスターの拡大または縮小に伴うデータの再バランスなど、シャーディングの管理を自動化します。
全体として、Redis Cluster のシャーディング アーキテクチャにより、スケーラビリティが高く、可用性が高く、管理が容易な分散データ ストアを提供できるため、大量のデータ ボリュームや高スループット要件を持つアプリケーションに最適です。
引用:[1] https://scalegrid.io/blog/intro-to-redis-sharding/
[2] https://redis.io/redis-enterprise/technology/redis-enterprise-cluster-architecture/
[3] https://yandex.cloud/en/docs/managed-redis/concepts/sharding
[4] https://redisson.org/glossary/sharding.html
[5] https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.NodeGroups.html