【发布时间】:2014-08-09 12:41:39
【问题描述】:
当我通过 redis EVAL 运行此代码时,它不会返回任何结果。知道为什么这不起作用吗?
redis-cli EVAL "$(cat bug.lua)" 0
bug.lua
local retv = {}
retv["test"] = 1000
return retv
如果我初始化表,则仅打印该值。
$ cat bug.lua
--!/usr/bin/env lua
local retv = {"This", "is", "a", "bug" }
retv["test"] = 1000
return retv
$ redis-cli EVAL "$(cat bug.lua)" 2 a b
1) "This"
2) "is"
3) "a"
4) "bug"
【问题讨论】:
-
您的实际命令在 0 之前是否有结束引号?没有它就行不通,想知道是错字还是真实
-
是的,你是对的。这只是一个错字。我在命令行上有它。解决问题。感谢您指出。
-
如果bug.lua 有
local msg = "hi"; return msg会起作用吗?如果您 cat 一个不存在的文件,您会收到错误消息吗?您正在返回对表的引用,而不是表的字符串表示形式,Redis 是否知道如何显示引用(本质上是指针)? -
Lua 解释器工作正常并且加载文件也很好。两者都检查过。
-
至于表引用的返回,Redis 手册 (redis.io/commands/eval) 说 Lua 表被转换为适当的 redis 数据结构。所以我不确定那里是否有问题。