How to call different commands with different arguments with Redis lua scripting
我有一个场景,需要在运行 redis 命令之前进行验证。该命令仅应在验证通过时运行。我正在考虑使用 lua 脚本来执行此操作。需要与其参数一起运行的命令应指定为 lua 脚本的参数。
这个脚本的逻辑是这样的:
1 2 3 | 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。我想了解如何将这些参数传递给调用方法。
您需要将剩余的参数复制到另一个表并使用
1 2 3 4 5 6 7 8 | 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 |