web-dev-qa-db-ja.com

java)を使用してRedis(キャッシュ)の単一の値を指す複数のキー

Javaでjedis(Redisキャッシュ)を使用して、単一の値で複数のキーを保存したい。

user_1driver_10admin_5、value = this is userのような3つのキーがあり、これら3つのキーのうちの1つを使用して値を取得したいと思います。

9
user3864113

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

回避策が必要になります。

以下のいくつかのアイデア、おそらく明白または愚かです:)


多分中間キーを持っています:
-user_10id_123
-driver_5id_123
-id_123data_that_you_dont_want_to_duplicate

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

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

  • user_10#data_that_you_dont_want_to_duplicate
  • driver_5@user_10
12
Hugues M.

トラフィックを節約し、1回の呼び出しでデータをプルできるLuaスクリプトを次に示します。eval "return redis.call( 'get'、redis.call( 'get'、KEYS [1]))" 1 user-10

上記はリクエストデータを返します。

0
J. Doe