2016-04-08 82 views
0

我有一個場景,在運行redis命令之前需要進行驗證。該命令只有在驗證通過後才能運行。我正在考慮使用lua腳本來做到這一點。需要與其參數一起運行的命令應該被指定爲lua腳本的參數。如何使用Redis lua腳本調用不同參數的不同命令

此腳本的邏輯是具有以下形式:

if verify(KEYS[1], ARGV[1]) then 
    redis.call(ARGV[2], KEYS[2], <the rest of arguments for the command ARGV[2]) 
done 

在redis.call方法需要的參數的數量取決於所執行的命令(ARGV [2])。這些參數通過ARGV [3]指定給ARGV [n],其中n> = 3。我想了解這些參數如何傳遞給調用方法。

回答

2

您需要將其餘參數複製到另一個表中,並使用unpack將該參數傳遞給該函數。片段勝過千言萬語:

local i, t = {} 
for i=3, #ARGV do 
    t[#t+1] = ARGV[i] 
end 

if verify(KEYS[1], ARGV[1]) then 
    redis.call(ARGV[2], KEYS[2], unpack(t)) 
done 
相關問題