在Nodejs中使用Lua脚本的Redis mget

我正在传递一个键(key)数组。这里 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
点赞
用户3160475
用户3160475

你应该这样做:

const reply = await getAsync(fs.readFileSync('./lib/test1.lua'), keylist.length, ...keylist);
2020-04-03 14:53:37