【发布时间】:2014-12-02 06:48:02
【问题描述】:
为什么不打印'hello'?
$ redis-cli
127.0.0.1:6379> eval "print( 'hello' )" 0
(nil)
127.0.0.1:6379>
在 Mac OS X 上运行 2.8.14,在 Windows 7 上运行 2.8.12。
我从 Jedis 调用 Lua 脚本。开发这些就像造船一个瓶子,戴着手套,而有人在打我的脸。我的最终目标是通过打印跟踪语句、调试等以某种方式重新创建一个半功能开发堆栈。
对于我的 Lua 脚本,我的解决方法是使用名为“log”的 Redis 列表,将其返回给 Jedis,然后转储内容。有点像这样:
redis.call( 'del', 'log' )
redis.call( 'rpush', 'log', 'trace statement 1' )
redis.call( 'rpush', 'log', 'trace statement 2' )
...
redis.call( 'lrange', 'log', 0, -1 )
提前感谢您提供的任何提示、帮助等。
更新:刚刚注意到 'hello' 确实通过终端窗口输出 redis-server 可执行文件。聪明的。所以现在我为 redis-server、redis-cli interactive 和 redis-cli monitor 分别设置了一个终端。
更新 2:刚刚发现我可以像这样将跟踪语句打印到 redis-cli 监视器:
eval "redis.call( 'echo', 'ugh')" 0
看起来有点像这样:
123.456 [0 127.0.0.1:57709] "eval" "redis.call( 'echo', 'ugh')" "0"
123.456 [0 lua] "echo" "ugh"
【问题讨论】: