我正在尝试编写一个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”,因为那些是存储在钥匙狗和猫中的值。出于某种原因,此脚本将始终返回空列表或集,我不明白为什么。任何帮助搞清楚的人都会受到赞赏!
答案 0 :(得分:1)
results
应为数组,即使用数字 NOT 字符串编制索引。有关详细信息,请参阅conversion between Lua and Redis data types。
为了使其有效,请将results[key] = values[i]
更改为results[i] = values[i]
。
另外,实际上,您只需返回values
,就无需将values
转换为results.