私の既存のJavaアプリケーション(Libertyで実行)は、いくつかのキャッシュを定義しています。一部のキャッシュ(ハッシュキー/値)のサイズは数GBになる場合があります。
クラスタリングを使用したRedisの実装を検討していますが、質問は...
既存のキャッシュをRedisハッシュにマッピングすることは理にかなっていますか?私が読んだところによると、Redisは異なるサーバーに異なるハッシュを配置することでパーティション化できますが、ハッシュエントリはパーティション化されません。これは正しいですか?
例えばこれの代わりに...
HSET cache1 cacheid1 "cache value" HSET cache1 cacheid2 "cache value" HSET cache2 cacheid3 "cache value"
代わりにこれを使用する必要がありますか?
SET cache1_cacheid1 "cache value" SET cache1_cacheid2 "cache value" SET cache2_cacheid3 "cache value"
2番目のアプローチはパーティション分割に適していますか?または他のアプローチはありますか?キャッシュをハッシュに保持すると、要素を数えたり空にしたりする場合など、簡単になります。
ありがとうございました!
はい、Redisは異なるノードに異なるキーを配置することでパーティション化できますが、ハッシュエントリはパーティション化されません。
キャッシュごとにハッシュを使用することは有効なアプローチです。
HSET cache1 cacheid1 "cache value" cacheid2 "cache value 2"
同じHSET
コマンドで複数のフィールドと値のペアを実行できることに注意してください。
これには、次のような利点があります。
HLEN
エントリを数えるHSCAN
フィールドを反復し、必要に応じてパターンマッチングを行い、フィールドを使用して値を取得します。SCAN
キースペース全体に渡り、値ではなくキーのみを返します。DEL
またはUNLINK
キャッシュ全体しかし、短所もあります。
Keysハッシュタグを見てください。
これにより、キーを強制的に同じハッシュスロットに配置できます。したがって、2番目のアプローチでは次のものを使用できます。
MSET {cache1}cacheid1 "cache value" {cache1}cacheid2 "cache value 2"
{cache1}
キー名に含まれるすべてのキーは、最終的に同じノードに配置されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加