2017-06-02 36 views
1

我想用java使用jedis(Redis緩存)存儲具有單個值的多個鍵。用java指向Redis(緩存)中的單個值的多個鍵

我有三個鍵,如user_1,driver_10,admin_5和value = this is user,我想通過使用這三個鍵中的任何一個鍵來獲得價值。

+0

你能否澄清什麼exacly是你的鑰匙?它是否包括括號在內的[user_10,driver_5]?你使用哪個[redis java客戶端](https://redis.io/clients#java)?傑迪斯,傑瑞迪斯? (不知道任何「jdis」) –

+0

我想添加多個鍵指向單個值 假設我有三個鍵,如user_1,driver_10,admin_5和值=「這是用戶」,我想通過使用獲得價值三個中的任意一個鍵 – user3864113

回答

4

現在Redis不支持多個鍵指向相同的值,請參閱issue #2668

您需要一種解決方法。

一些想法下面,可能是明顯的或愚蠢的:)


也許有一箇中間鍵:
- user_10id_123
- driver_5id_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 =「這是用戶」,我想通過使用三個中的任何一個鍵獲得價值 – user3864113

+1

好的,我認爲我理解正確,我的答案的第一句是相關的:目前不支持,所以你可以評論鏈接的github問題,或考慮解決方法。 –

+0

好的,謝謝budy。 – user3864113