我有一个场景,在运行redis命令之前需要进行验证。只有在验证通过后才能运行该命令。我正在考虑使用lua脚本来执行此操作。需要与其参数一起运行的命令应该被指定为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.我想了解这些参数如何传递给调用方法。
答案 0 :(得分: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