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