4

我想为我的 Etherpad 编写一个 ueberDB Redis-Handler。

我绝对不明白我的问题,因为使用 PHP 我可以毫无问题地设置和获取键/值。它仅不适用于 NodeJS。

这是一个示例代码:

var redis = require("redis");
client = redis.createClient();
client.on("error", function (err) {
  console.log("Error " + err);
});

client.set("test", "string val", redis.print);
console.log(client.get("test"));

我错了什么?也许有人给我一个小费。

4

2 回答 2

8

首先,您需要知道您的 redis 客户端是否已连接。您可以使用 console.log(client) 检查,您将看到一个名为“已连接”的变量。你应该看到“真实”

如果你想在节点中使用 redis,你应该使用类似这样的东西

    client.set("test","val", function(err) {
        if (err) {
           // Something went wrong
           console.error("error");
        } else {
            client.get("test", function(err, value) {
                 if (err) {
                     console.error("error");
                 } else {
                     console.log("Worked: " + value);
                 }
            });
        }
    });

请记住,所有 redis 函数都是异步的。

于 2011-12-03T00:56:53.750 回答
2

如果从接受的答案中不明显,则发布的代码失败的原因是由于异步性。

您在 set() 完成之前调用 get() 。

于 2013-05-16T07:30:20.803 回答