我想用java使用jedis(Redis緩存)存儲具有單個值的多個鍵。用java指向Redis(緩存)中的單個值的多個鍵
我有三個鍵,如user_1
,driver_10
,admin_5
和value = this is user
,我想通過使用這三個鍵中的任何一個鍵來獲得價值。
我想用java使用jedis(Redis緩存)存儲具有單個值的多個鍵。用java指向Redis(緩存)中的單個值的多個鍵
我有三個鍵,如user_1
,driver_10
,admin_5
和value = this is user
,我想通過使用這三個鍵中的任何一個鍵來獲得價值。
現在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 =「這是用戶」,我想通過使用三個中的任何一個鍵獲得價值 – user3864113
好的,我認爲我理解正確,我的答案的第一句是相關的:目前不支持,所以你可以評論鏈接的github問題,或考慮解決方法。 –
好的,謝謝budy。 – user3864113
你能否澄清什麼exacly是你的鑰匙?它是否包括括號在內的[user_10,driver_5]?你使用哪個[redis java客戶端](https://redis.io/clients#java)?傑迪斯,傑瑞迪斯? (不知道任何「jdis」) –
我想添加多個鍵指向單個值 假設我有三個鍵,如user_1,driver_10,admin_5和值=「這是用戶」,我想通過使用獲得價值三個中的任意一個鍵 – user3864113