Redis-partitioning
提供:Dev Guides
Redis-パーティショニング
パーティショニングは、データを複数のRedisインスタンスに分割するプロセスであるため、すべてのインスタンスにはキーのサブセットのみが含まれます。
パーティション化の利点
- 多くのコンピューターのメモリの合計を使用して、はるかに大きなデータベースを使用できます。 パーティションを作成しないと、1台のコンピューターがサポートできるメモリの量に制限されます。
- これにより、計算能力を複数のコアと複数のコンピューターに拡張し、ネットワーク帯域幅を複数のコンピューターとネットワークアダプターに拡張できます。
パーティション分割の欠点
- 通常、複数のキーを含む操作はサポートされていません。 たとえば、2つのセットが異なるRedisインスタンスにマッピングされているキーに保存されている場合、それらのセット間の交差を実行することはできません。
- 複数のキーを含むRedisトランザクションは使用できません。
- パーティションの粒度がキーであるため、非常に大きなソートされたセットのような単一の巨大なキーを持つデータセットを分割することはできません。
- パーティショニングを使用すると、データ処理がより複雑になります。 たとえば、複数のRDB/AOFファイルを処理する必要があり、データのバックアップを取得するには、複数のインスタンスとホストから永続性ファイルを集約する必要があります。
- 容量の追加と削除は複雑になる場合があります。 たとえば、Redis Clusterは、実行時にノードを追加および削除する機能を備えたデータのほぼ透過的なリバランスをサポートしています。 ただし、クライアント側のパーティション分割やプロキシなどの他のシステムは、この機能をサポートしていません。 この点で Presharding と呼ばれる手法が役立ちます。
パーティションの種類
Redisでは、2種類のパーティショニングを利用できます。 4つのRedisインスタンス、R0、R1、R2、R3と、user:1、user:2、…などのユーザーを表す多くのキーがあるとします。 などなど。
範囲分割
範囲分割は、オブジェクトの範囲を特定のRedisインスタンスにマッピングすることにより実現されます。 この例では、ID 0からID 10000のユーザーがインスタンスR0に移動し、ID 10001からID 20000のユーザーがインスタンスR1に移動するとします。
ハッシュ分割
このタイプのパーティション分割では、ハッシュ関数(例: モジュラス関数)は、キーを数値に変換するために使用され、その後、データは異なるRedisインスタンスに保存されます。