Javaでjedis(Redisキャッシュ)を使用して、単一の値で複数のキーを保存したい。
user_1
、driver_10
、admin_5
、value = this is user
のような3つのキーがあり、これら3つのキーのうちの1つを使用して値を取得したいと思います。
現在、Redisでは複数のキーが同じ値を指すことはサポートされていません。 問題#2668 を参照してください。
回避策が必要になります。
以下のいくつかのアイデア、おそらく明白または愚かです:)
多分中間キーを持っています:
-user_10
→id_123
-driver_5
→id_123
-id_123
→data_that_you_dont_want_to_duplicate
そのロジックをクライアントコードまたはサーバー上のカスタムLuaスクリプトに実装し、クライアントコードにそれらのスクリプトを使用させることができます(ただし、詳細を提供するのに十分な知識はありません)。
クライアント側で間接ロジックを実装し、アクセスが不均衡である場合、たとえば、99%の確率でユーザーキーを介して、1%の確率でドライバーキーを介してデータにアクセスする場合、2つのクライアントサーバーを回避する価値があります。 99%の場合の往復。このために、リダイレクトをエンコードできます。たとえば、最初の文字が#
の場合、残りはデータです。最初の文字が@
の場合、残りは実際のキーです。
user_10
→#data_that_you_dont_want_to_duplicate
driver_5
→@user_10
トラフィックを節約し、1回の呼び出しでデータをプルできるLuaスクリプトを次に示します。eval "return redis.call( 'get'、redis.call( 'get'、KEYS [1]))" 1 user-10
上記はリクエストデータを返します。