Redisコマンド操作中国語マ...login
Redisコマンド操作中国語マニュアル
著者:php.cn  更新時間:2022-04-12 14:07:28

Redisパーティション


パーティショニングはデータを複数の Redis インスタンスに分割するプロセスであるため、各インスタンスはキーのサブセットのみを保存します。

パーティショニングの利点

  • により、複数のコンピューターのメモリの合計を利用して、より大きなデータベースを構築できます。

  • マルチコアと複数のコンピューターを通じてコン​​ピューティング能力を拡張でき、複数のコンピューターとネットワーク アダプターを通じてネットワーク帯域幅を拡張できます。

パーティショニングのデメリット

Redis の一部の機能は、パーティショニングに関してはうまく機能しません:

  • 複数のキーを含む操作は通常サポートされません。たとえば、2 つのセットが異なる Redis インスタンスにマップされている場合、2 つのセットに対して交差操作を実行することはできません。

  • 複数のキーを含む Redis トランザクションは使用できません。

  • たとえば、複数の rdb/aof ファイルを処理し、複数のインスタンスやホストから永続ファイルをバックアップする必要がある場合、データ処理はより複雑になります。

  • 容量の追加または削除もさらに複雑です。ほとんどの Redis クラスターは、実行時のデータ分散のためにノードを透過的に追加および削除する機能をサポートしていますが、クライアント パーティションやプロキシなどの他のシステムはこの機能をサポートしていません。ただし、プリシャーディングと呼ばれる技術がこれに役立ちます。


パーティションの種類

Redis には 2 種類のパーティションがあります。 4 つの Redis インスタンス R0、R1、R2、R3 と、user:1 や user:2 などのユーザーを表す複数のキーがあるとします。キーをどのインスタンスに保存するかを選択するにはさまざまな方法があります。 。言い換えれば、特定のキーを特定の Redis サービスにマッピングするためのさまざまなシステムが存在します。

範囲パーティショニング

最も単純なパーティショニング方法は、オブジェクトの特定の範囲を特定の Redis インスタンスにマップする範囲パーティショニングによるものです。

たとえば、0 ~ 10000 の ID を持つユーザーはインスタンス R0 に保存され、10001 ~ 20000 の ID を持つユーザーは R1 に保存されます。

この方法は実行可能であり、実際に使用できます。欠点は、範囲からインスタンスへのマッピング テーブルが存在することです。このテーブルは管理する必要があり、さまざまなオブジェクトのマッピング テーブルも必要ですが、これは通常 Redis にとって適切な方法ではありません。

ハッシュパーティショニング

もう1つのパーティショニング方法はハッシュパーティショニングです。これはどのキーでも機能し、object_name:

  • である必要はありません。 crc32 ハッシュ関数などのハッシュ関数を使用してキーを数値に変換します。キー foobar で crc32(foobar) を実行すると、93024922 のような整数が出力されます。

  • この整数の剰余を取得し、0 ~ 3 の数値に変換します。この整数は 4 つの Redis インスタンスのいずれかにマッピングできます。 93024922 % 4 = 2。これは、キー foobar が R2 インスタンスに保存される必要があることを意味します。注: モジュロ演算は除算の余りであり、通常、多くのプログラミング言語では % 演算子を使用して実装されます。

PHP中国語ウェブサイト