Redisのパーティション
パーティションは、各インスタンスは、キーのサブセットのみを保存するために、Redisのインスタンスを処理する複数のデータに分割されています。
パーティショニングのメリット
- 複数のコンピュータのメモリおよび値を使用することによって、私たちは、より大きなデータベースを構築することを可能にします。
- マルチコアとマルチプロセッサコンピュータでは、私たちが能力を計算する拡張することができ、複数のコンピュータやネットワークアダプタを介して、私たちはネットワークの帯域幅を拡張することができます。
不適切なパーティション
パーティショニング性能の一部の機能のRedisのは非常に良いではありません。
- 操作は、複数のキーは、一般的にサポートされていませんが含まれます。 例えば、2セットはRedisのの異なるインスタンスにマッピングされたとき、あなたはこれらの2積集合操作を実行することができません。
- これは、キーRedisのトランザクションの数を使用することができないことを含みます。
- パーティションを使用する場合は、より複雑なデータ処理が、例えば、あなたが永続し、ホストの複数のインスタンスから複数のRDB / AOFファイルとバックアップファイルを処理する必要があります。
- 追加または削除容量もより複雑です。 Redisの大多数のサポート、クラスタランタイムが増加する時に、透明なデータは電源のノードのバランスを削除しますが、クライアントのパーティションと同様に、エージェントや他のシステムがこの機能をサポートしていません。 しかし、preshardingと呼ばれるこの技術は有用です。
パーティションの種類
Redisのパーティションの2種類があります。 仮定が4つのRedis例えばR0、R1、R2、R3、及び同様のユーザ1、ユーザ:ユーザの2キーそのような表現は、複数のキーは、インスタンスに格納されているさまざまな方法を選択するためのキーを与えられました。 言い換えれば、Redisのサービスにキーをマッピングする別のシステムがあります。
レンジ・パーティション化
最も簡単な方法は、レンジ・パーティション化は、被験者固有のRedisのインスタンスの範囲にマップされている分割することです。
例えば、0〜10000のユーザーからのIDは10001から20000のユーザーからのIDがR1に保存された、というようにされ、インスタンスR0を保存します。
このアプローチは実現可能で実用的であり、マッピングテーブルインスタンスの範囲未満の範囲を有することです。 このテーブルは、管理されるだけでなく、さまざまなオブジェクトをマッピングする必要があり、通常はRedisのは良い方法ではありません。
ハッシュ・パーティション化
別のアプローチは、パーティショニングのパーティションをハッシュすることです。 これは、任意のキーに適用され、object_nameのである必要はありません。
- ハッシュファンクションキーを使用することは、CRC32ハッシュ関数を用いて、数に変換されます。 キーfoobarにのCRC32(foobarという)が出力類似93024922の整数の実装。
- 0-3との間でデジタルに変換し、この整数を法は、1である整数4 Redisのインスタンスにマッピングすることができます。 九千三百二万四千九百二十二%4 = 2は、そのキーfoobarにはR2のインスタンスに保存されるべきです。 注:モジュロ演算は、加算の残りを取ることで、%演算子は、通常、さまざまなプログラミング言語を用いて実現されます。