我正在尝试编写一个 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”,因为这些是存储在键 dog 和 cat 中的值。出于某种原因,这个脚本总是会返回一个空列表或集合,我不明白为什么。任何解决问题的帮助将不胜感激!
最佳答案
results
应该是一个数组,即用数字索引,不是 字符串。参见 conversion between Lua and Redis data types了解详情。
为了让它工作,将 results[key] = values[i]
更改为 results[i] = values[i]
。
另外,其实你可以只返回values
,不需要将values
转换成results。
关于lua - 如何编写一个lua脚本来一次从Redis获取多个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48929937/