0

这是示例 node.js 代码的扩展:

var express = require('express');
var application = express.createServer();

var redis = require("redis"),
    client = redis.createClient();

client.on("error", function (err) {
    console.log("Error " + err);
});

client.set("test key", "TEST KEY VALUE", redis.print);

application.get('/', function(request, response) {
        client.get('test key', function(err, value) {
            client.quit();
            response.send('The value of "test key" is: ' + value);
        });
});

application.listen(2455);

服务器启动正常,但在访问时,页面加载了一段时间,最终出错 - “未收到数据”。

我有 redis 运行,密钥保存得很好,我也可以通过 client.get() 在节点的 repl 中很好地访问它们。

我想我缺少一些关于异步程序如何工作的理论。

4

2 回答 2

1

我不认为 Redis/redis 库需要你明确地终止客户端连接。即使这样做,您也需要确保在退出客户端之前已调用和处理成功或错误回调。

希望能帮助到你。

于 2012-07-13T22:01:01.590 回答
1

您可能会收到错误,并且因为您没有在 res.send 之前检查err变量,所以您的应用程序不会返回任何内容。尝试添加如下内容: if(err) throw err; 在 client.get 之后并检查 STDOUT

于 2012-07-14T18:35:28.283 回答