如何编写Lua脚本一次从Redis获取多个键?

我正在尝试编写一个Lua脚本,从Redis数据库中一次返回多个键。我要运行的脚本是:

script load "local values = redis.call('MGET', unpack(ARGV)); local results = {}; for i, key in ipairs(ARGV) do results[key] = values[i] end; return results"

然后,我会使用evalsha运行它(返回的sha号码是什么),使用0 dog cat(其中dog和cat是我在数据库中保存的两个键)。

理想情况下,它应该返回"woof" "meow",因为这些是保存在狗和猫键中的值。由于某种原因,这个脚本总是返回一个空列表或集合,我不明白为什么。如果有什么帮助弄清楚它的方法,将不胜感激!

点赞
用户5384363
用户5384363

results 应该是一个数组,即使用数字索引,而不是字符串。有关详细信息,请参见Lua与Redis数据类型之间的转换

为使其正常工作,请将results[key] = values[i] 更改为 results[i] = values[i]

实际上,您可以只返回values,没有必要将values转换为results

2018-02-22 15:14:40