Javaでjedis(Redisキャッシュ)を使用して単一の値を持つ複数のキーを格納したいとします。JavaでRedis(キャッシュ)の単一の値を指す複数のキー
は私がuser_1
、driver_10
、admin_5
値= this is user
のような3つのキーを持っている、と私は、これらの3つのうちのいずれか一つのキーを使用して値を取得したいです。
Javaでjedis(Redisキャッシュ)を使用して単一の値を持つ複数のキーを格納したいとします。JavaでRedis(キャッシュ)の単一の値を指す複数のキー
は私がuser_1
、driver_10
、admin_5
値= this is user
のような3つのキーを持っている、と私は、これらの3つのうちのいずれか一つのキーを使用して値を取得したいです。
複数のキーが同じ値を指していることは、現在Redisではサポートされていません。issue #2668を参照してください。
回避策が必要です。
可能性が明らかまたは愚か以下のいくつかのアイデア、:)
たぶん中間鍵があります。
- user_10
→id_123
- driver_5
を→id_123
- id_123
→data_that_you_dont_want_to_duplicate
ますそのロジックをクライアントコードで、またはサーバー上のカスタムLuaスクリプトで実装できます。あなたのクライアントコードにこれらのスクリプトを使用させてください(しかし、詳細を提供するのに十分なことは分かりません)。
クライアント側でインダイレクションロジックを実装し、アクセスが不均衡の場合、たとえば、ユーザーキー99%、ドライバキー1%でデータにアクセスするなど、回避する価値があります99%の場合、2つのクライアント - サーバーラウンドトリップ。このためにリダイレクトをエンコードすることができます。たとえば、最初の文字が#
の場合、残りはデータです。最初の文字が@
の場合、残りは実際のキーです。
user_10
→#data_that_you_dont_want_to_duplicate
driver_5
→@user_10
私はuser_1、driver_10、admin_5、value = "これはユーザー"の3つのキーがあり、3つのうちのいずれか1つのキーを使用して値を取得したいと仮定して単一の値を指す複数のキーを追加したい – user3864113
そうすれば私は正しく理解したと思います。私の答えの最初の文は関連しています:それは現在サポートされていないので、リンクされたgithub問題にコメントしたり、回避策を考えたりできます。 –
okありがとうございました。 – user3864113
あなたはexaclyあなたの鍵が何であるかを明確にもらえますか?それはブラケットを含む '[user_10、driver_5]'ですか?どの[redis java client](https://redis.io/clients#java)を使っていますか?ジェダイ、ジュディス? –
単一の値を指している複数のキーを追加したい場合 user_1、driver_10、admin_5、value = "this is user"という3つのキーがあり、使用して値を取得したいと仮定します3つのうちのどれか1つのキー – user3864113