Redis Mget, используя Lua скрипт в Nodejs - PullRequest
0 голосов
/ 03 апреля 2020

Я передаю массив ключей. Здесь keylist = ['KEY_100', 'KEY_101'] Я хочу получить все значения ключей. Но я получаю сообщение об ошибке: node_redis: Deprecated: The EVAL command contains a argument of type Array. Существует проблема в github, предлагающая использовать toString () и снова проанализировать значение в конце. Но я доволен этим. Может кто-нибудь помочь мне с этой проблемой?

Nodejs:

getDataLua (keylist) {
    console.log('lua keylist:', keylist)
    const getAsync = promisify(this.client.eval).bind(this.client)
    const reply = await getAsync(fs.readFileSync('./lib/test1.lua'), 1, keylist)
    console.log('reply', reply)
    return reply
  }

Lua Сценарий:

local keys = redis.call('keys', KEYS[1])
local values = redis.call('mget', unpack(keys))
local keyValuePairs = {}
for i = 1, #keys do
  keyValuePairs[i] = .. values[i]
end
return keyValuePairs

1 Ответ

1 голос
/ 03 апреля 2020

Вы должны сделать что-то вроде этого:

const reply = await getAsync(fs.readFileSync('./lib/test1.lua'), keylist.length, ...keylist);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...