我想从lua脚本中按多个MATCH搜索,但是'MATCH'的数量取决于脚本的需要-我需要搜索与所有单词匹配的键(在这种情况下为“ aa”,“ bb”)任何顺序和字数可能更多(或更小) 如果它的工作原理像这样:
local result = redis.call("SCAN", 0, "MATCH", "*aa*", "MATCH", "*bb*")
我如何使其具有动态性,在哪里可以添加所需的MATCH? 像这样:
local match={}
for i=1, #ARGV do
table.insert(match, "MATCH")
table.insert(match, "*"..ARGV[i].."*")
end
local result = redis.call("SCAN", 0, match)
...我试图将其放入字符串时出现错误:
local match="SCAN 0 MATCH *aa* MATCH *bb*"
local result = redis.call(match)
从Lua脚本调用的未知Redis命令
答案 0 :(得分:3)
("SCAN", 0, match)
中的匹配项将作为表格传递,您需要对此进行解压缩。
在这些行上有相似之处
local match={}
match[1] = "SCAN"
match[2] = 0
for i=2, #ARGV do
match[#match+1] = "MATCH"
match[#match+1] = "*"..ARGV[i].."*"
end
redis.call(unpack(match))