如何使用Redis lua脚本调用具有不同参数的不同命令

如何使用Redis lua脚本调用具有不同参数的不同命令,lua,redis,Lua,Redis,我有一个场景,在运行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 如果验证(键[1],ARGV[1]),则 redis.c

我有一个场景,在运行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
如果验证(键[1],ARGV[1]),则

redis.call(ARGV[2],键[2],=3)。我想了解如何将这些参数传递给call方法。

您需要将其余参数复制到另一个表中,并使用
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

您需要将参数的其余部分复制到另一个表中,并使用
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