2016-04-08 8 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を使用して関数に渡す必要があります。スニペットは1000語の価値があります。

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 
関連する問題