无法使用NodeJS和Redis进行SET / GET

时间:2011-12-03 00:42:57

标签: node.js redis key-value etherpad

我想为我的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"));

我错了什么?也许有人给我一个提示。

2 个答案:

答案 0 :(得分:7)

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

如果你想在节点中使用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函数都是异步的。

答案 1 :(得分:1)

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

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