2016-11-09 36 views
0

假設Redis中有兩個關鍵值對。一個人的關鍵是key1,value是value1,另一個關鍵是value1,值是value2,這意味着第一個人的價值只是另一個人的關鍵,現在我想獲得value2。
所以我查詢key1得到value1,然後我用value1得到value2,但是有兩個網絡跳閘,我需要的僅僅是一次網絡跳閘,比如當我們得到值1時,它不會' t間歇性地返回給客戶端,但繼續根據鍵值1查詢value2,然後返回。我們可以根據Redis中另一個值的結果來查詢沒有網絡的值嗎?

回答

1

不,Redis沒有內置的解引用機制。

一個Lua腳本似乎是一個好方法,但是如果採用它將會違反Redis指令來顯式傳遞所有的鍵名。如果原始需求稍微改變,可以解決這個問題 - 使用單個哈希鍵存儲所有值並將該密鑰的名稱傳遞給腳本。請注意,除非解引用是常量(例如,總是執行一次),否則您需要區分需要解引用的值和不需要的值 - 例如,可以通過在特殊字符前添加「指針」值。

+0

請給出關於* Redis指令的更多細節,以便明確地傳遞所有關鍵名* *?或者至少給我一個鏈接?我以前不知道這個指令。非常感謝! –

+0

Tsk,tsk。有人沒有RTFM;)檢查第一部分,介紹EVAL,在http://redis.io/commands/eval –

+0

我只找到以下內容:*所有附加參數不應代表關鍵名稱,可以通過訪問在執行前必須分析使用ARGV全局變量*和*的所有Redis命令,以確定命令將在哪些鍵上運行。爲了使EVAL成爲真,密鑰必須明確傳遞。* –

相關問題