如何编写一个lua脚本来从Redis一次获取多个密钥?

时间:2018-02-22 14:29:39

标签: lua redis scripting

我正在尝试编写一个Lua脚本,它将从Redis DB返回多个键。我试图运行的脚本是:

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运行它(无论它返回的是什么号码)0只狗猫(其中狗和猫是我在数据库中保存的两个键)。

理想情况下,它会返回“woof”“meow”,因为那些是存储在钥匙狗和猫中的值。出于某种原因,此脚本将始终返回空列表或集,我不明白为什么。任何帮助搞清楚的人都会受到赞赏!

1 个答案:

答案 0 :(得分:1)

results应为数组,即使用数字 NOT 字符串编制索引。有关详细信息,请参阅conversion between Lua and Redis data types

为了使其有效,请将results[key] = values[i]更改为results[i] = values[i]

另外,实际上,您只需返回values,就无需将values转换为results.