2016-12-07 61 views
2

我正在嘗試使用Lua腳本對redis進行MSETNX調用。 如果它們不存在,我需要設置一些帶有空值的鍵。作爲redis參數的Lua表

我試圖做這樣的:與傳遞給腳本KEYS {'key1', '', 'key2', ''}

redis.call('MSETNX', KEYS)

但這不起作用,因爲此調用需要個別鍵和值作爲參數傳遞,而不是表。

這工作:

redis.call('MSETNX', 'key1', '', 'key2', '')

但KEYS變量是動態的,所以我不能那樣做。

我怎樣才能撥打MSETNX而不必分別明確列出每個密鑰?

- 編輯 -

是否有可能unpack和 「混雜」 的價值觀?

我可以通過KEYS = {'key1', 'key2'}unpack它到:'key1', '', 'key2', ''?謝謝!

+0

我想你可能誤解了我的問題。問題不在於如何在Redis中執行此操作,而是如何將我的表格元素「分解」爲單個參數。 – aturkovic

回答

3

使用Lua的桌子上的unpack,即:

redis.call('MSETNX', unpack(KEYS)) 

旁註:因爲表使用Redis的關鍵名字傳遞給腳本不使用KEYS爲你的表的名稱。

+0

就是這樣!解包完成了這個訣竅!非常感謝!順便說一句,你介意看看我編輯另一件困擾着我的事情嗎? – aturkovic

+0

附註:我試圖做一個例子,我沒有在Lua腳本中分配KEYS變量,但是感謝您的警告。 – aturkovic

+1

我不知道這樣的事情,但是您可以輕鬆地遍歷表格以在每個條目之後插入空格,然後解包整個事物 –