2017-06-02 2 views
1

Javaでjedis(Redisキャッシュ)を使用して単一の値を持つ複数のキーを格納したいとします。JavaでRedis(キャッシュ)の単一の値を指す複数のキー

は私がuser_1driver_10admin_5値= this is userのような3つのキーを持っている、と私は、これらの3つのうちのいずれか一つのキーを使用して値を取得したいです。

+0

あなたはexaclyあなたの鍵が何であるかを明確にもらえますか?それはブラケットを含む '[user_10、driver_5]'ですか?どの[redis java client](https://redis.io/clients#java)を使っていますか?ジェダイ、ジュディス? –

+0

単一の値を指している複数のキーを追加したい場合 user_1、driver_10、admin_5、value = "this is user"という3つのキーがあり、使用して値を取得したいと仮定します3つのうちのどれか1つのキー – user3864113

答えて

4

複数のキーが同じ値を指していることは、現在Redisではサポートされていません。issue #2668を参照してください。

回避策が必要です。

可能性が明らかまたは愚か以下のいくつかのアイデア、:)


たぶん中間鍵があります。
- user_10id_123
- driver_5を→id_123
- id_123data_that_you_dont_want_to_duplicate

ますそのロジックをクライアントコードで、またはサーバー上のカスタムLuaスクリプトで実装できます。あなたのクライアントコードにこれらのスクリプトを使用させてください(しかし、詳細を提供するのに十分なことは分かりません)。

クライアント側でインダイレクションロジックを実装し、アクセスが不均衡の場合、たとえば、ユーザーキー99%、ドライバキー1%でデータにアクセスするなど、回避する価値があります99%の場合、2つのクライアント - サーバーラウンドトリップ。このためにリダイレクトをエンコードすることができます。たとえば、最初の文字が#の場合、残りはデータです。最初の文字が@の場合、残りは実際のキーです。

  • user_10#data_that_you_dont_want_to_duplicate
  • driver_5@user_10
+0

私はuser_1、driver_10、admin_5、value = "これはユーザー"の3つのキーがあり、3つのうちのいずれか1つのキーを使用して値を取得したいと仮定して単一の値を指す複数のキーを追加したい – user3864113

+1

そうすれば私は正しく理解したと思います。私の答えの最初の文は関連しています:それは現在サポートされていないので、リンクされたgithub問題にコメントしたり、回避策を考えたりできます。 –

+0

okありがとうございました。 – user3864113

関連する問題