【问题标题】:Dynamic number of parameters in redis.call / luaredis.call / lua中的动态参数个数
【发布时间】:2018-09-24 09:55:51
【问题描述】:

我想通过 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 命令

【问题讨论】:

    标签: lua redis


    【解决方案1】:

    ("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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 2021-04-15
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      相关资源
      最近更新 更多