首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Redis Lua脚本输出到控制台?

如何从Redis Lua脚本输出到控制台?
EN

Stack Overflow用户
提问于 2014-10-08 02:32:14
回答 4查看 7K关注 0票数 11

为什么不打印“hello”?

代码语言:javascript
复制
$ 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脚本。开发这些就像建造一艘船,一个瓶子,戴着拳击手套,而有人在打我的脸。我的最终目标是通过打印跟踪语句、调试等等,以某种方式重新创建半功能开发堆栈。

我的变通方法是使用名为'log‘的Redis列表,将其返回给Jedis,然后转储内容。有点像这样:

代码语言:javascript
复制
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监视器上:

代码语言:javascript
复制
eval "redis.call( 'echo', 'ugh')" 0

它看起来有点像这样:

代码语言:javascript
复制
123.456 [0 127.0.0.1:57709] "eval" "redis.call( 'echo', 'ugh')" "0"
123.456 [0 lua] "echo" "ugh"
EN

回答 4

Stack Overflow用户

发布于 2014-10-08 04:13:22

我最终找到了redis.log(loglevel, message),它也会写入redis-server的控制台输出。

票数 17
EN

Stack Overflow用户

发布于 2014-12-09 17:05:00

有更好的方法来开发针对redis的LUA脚本。

使用lua日志是一种方法。但您也可以通过订阅调试主题来发布“随需应变”日志。

您还可以设置带有lua断点的集成开发环境,我认为这是最好的开发解决方案:http://www.trikoder.net/blog/make-lua-debugging-easier-in-redis-87/

此外,不要忘记自动测试,单元和/或集成测试是有帮助的(针对debug redis实例执行)。

票数 2
EN

Stack Overflow用户

发布于 2015-01-28 17:40:56

使用jedis,下面是你如何做到这一点。这是一个使用set和get命令的示例。您需要在类路径中包含jedis-2.6.0jar文件。

代码语言:javascript
复制
//jar file - jedis-2.6.0.jar

import redis.clients.jedis.Jedis;
public class MainClass {

public static void main(String[] args){
     Jedis jedis = new Jedis("localhost");
     System.out.println("Connection to server sucessfully");
     jedis.set("name", "a");
     System.out.println("Stored string (b4 lua) : "+ jedis.get("name"));
     String script="redis.call('set','name','b')";
     jedis.eval(script);
     System.out.println("Stored string : "+ jedis.get("name"));
}

}

输出:连接到服务器成功存储字符串(b4 lua):a存储字符串:b

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26242838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档