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

我有一个场景,在运行Redis命令之前需要进行验证。仅当验证通过时才应运行该命令。我考虑使用lua脚本来做这件事。需要运行的命令以及其参数应作为参数指定给lua脚本。逻辑如下:

if verify(KEYS[1], ARGV[1]) then
    redis.call(ARGV[2], KEYS[2], <命令ARGV[2]的其余参数>)
done

redis.call方法中所需的参数数量取决于执行的命令(ARGV \ [2 ])。这些参数是通过ARGV \ [3 ]到ARGV \ [n ]指定给脚本的,其中n> = 3。我想了解如何将这些参数传递给调用方法。

点赞
用户3160475
用户3160475

你需要将参数的剩余部分复制到另一个表中,并使用 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
2016-04-08 13:50:08