Динамическое количество параметров в redis.call / lua - PullRequest
0 голосов
/ 24 сентября 2018

Я хочу выполнить поиск по нескольким MATCH из скрипта lua, но число 'MATCH' зависит от потребностей скрипта - мне нужно искать ключи, которые соответствуют всем словам (в данном случае "aa", "bb") влюбой порядок и количество слов могут быть больше (или меньше), если он исправил свою работу следующим образом:

local result = redis.call("SCAN", 0, "MATCH", "*aa*", "MATCH", "*bb*")

как я могу сделать это динамическим, где я могу добавить столько соответствий, сколько мне нужно?что-то вроде:

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)

Неизвестная команда Redis, вызванная из сценария Lua

1 Ответ

0 голосов
/ 24 сентября 2018

совпадение в ("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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...