传递可变数量的参数到 Redis Lua 脚本

我正在使用 EVAL 命令将多个参数传递给我的 Lua 脚本。然而,最后一个参数是可选的,可能会传递给 EVAL 命令,也可能不会。

在 Redis Lua 脚本中,如何检查一个参数是否存在?例如,如果 ARGV [3] 存在或不存在。

点赞
用户5384363
用户5384363
如果存在ARGV [3],则:
- 用户传入ARGV [3]
否则:
- 没有ARGV [3]
2019-03-23 12:06:59
用户9648992
用户9648992

redis.call('DEL', KEYS[1]) local members = {} for i = 0, tonumber(ARGV[1]), 1 do members[i] = ARGV[1+i] end redis.call('SADD', KEYS[1], unpack(members)) return 1


``` 执行 Redis 命令 DEL,删除键 KEYS[1]对应的集合。

使用 Lua 中的 local 定义一个空表 members

遍历 ARGV 数组,从下标 1 开始,到下标为 ARGV[1] 的位置,每次递增 1。将遍历到的值存储到 members表中对应的下标位置。

使用 Redis 命令 SADD,将 members 表当做参数传递给该命令,添加到键 KEYS[1]对应的集合中。

返回 1。

2021-07-16 08:10:23