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

标签 lua redis scripting

我正在尝试编写一个 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/

相关文章:

c++ - 在 Windows 中构建 Luabind

Lua 检查字符串是否为十进制整数

linux - 如何使用循环 ssh 多个服务器,但如果一个用户失败,则与两个用户尝试另一个

lua - 在 Lualin 中查找当前缓冲区 lsp 客户端

regex - 使用 Lua 遍历 XML 节点

redis - 如何使用错误处理程序重新连接到 StackServices.RedisMqServer 中的重新分发服务器?

php - Laravel 5.5 Redis + Socket.IO 无法工作

caching - 如何使用Redis缓存来缓存大对象

Scripting.Dictionary Lookup-add-if-not-present 只有一键搜索?

ruby - 如何使 Ruby 文件作为可执行文件运行?