同步调用Redis Server

时间:2014-06-10 12:44:07

标签: node.js redis asynchronous

使用以下代码,我可以异步访问Redis客户端,使用偶然的Node JS方式代码:

function start()
{
    var redis = require("redis");
    var host = "127.0.0.1";
    var port = 6379;
    var client = redis.createClient(port, host);    

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

    client.set("hi", "hey", redis.print);

    return client;
}

function getValue(client, callback)
{
    client.get("hi", function (err, res) {
        callback(res);
    });

}

var c = start();
getValue(c, function(r){
    console.log('Result ' + r);
});

控制台打印'结果嘿'。

我没有在getValue()函数中使用回调,而是想做一个经典的回归:

function getValue(client)
{
    client.get("hi", function (err, res) {
        return res;
    });

}

为了拥有:

var r = getValue(c);
console.log(r);

因此要对Redis服务器进行同步调用。我试过异步,纤维,...库,但我卡住了,不知道怎么做......

谢谢。

2 个答案:

答案 0 :(得分:0)

可以在以下位置找到类似的主题: How to Sync call in Node.js

您可以考虑使用stepnode-finish来实现您的目标

答案 1 :(得分:0)

您可能希望将回调传递给client.set()调用。

client.set("hi", "hey", function (err, res) {
  cb(err, res);
})