javascript - 将 redis 与 node.js 一起使用时无法获取有效列表

标签 javascript node.js redis

我正在使用 node.js 并使用 redis 在服务器上缓存一些数据。

我的代码:

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

client.flushall();

function redis_get(key){
    client.get(key, function(err, value) {
        if (err) {
        console.error("error");
        } else {
            return value;
        }
    });
}

function redis_set(key, value){
    client.set(key, JSON.stringify(value), function(err) {
        if (err) {
            console.error("error");
        }
    return true
    });
}

function main(){

    var new_items = [{"id": 1, "name": "abc"}, {"id": 2, "name": "xyz"}, {"id": 3, "name": "bbc"}];

    //set data in redis
    redis_set("key", new_items);

    //get data from redis
    var redis_items = redis_get("key");
}

代码摘要:

主函数被调用,它进一步调用了另外两个函数(redis_set 或 redis_get)。 Redis_set 采用键和值对,而 redis_get 采用指向数据的键。

问题:

该集合运行良好,但问题在于 GET。我没有按照我在 redis 中设置的方式获取数据。我在 get 中使用了 JASON.parse(),因为我在设置数据时对数据进行了字符串化。

最佳答案

从redis中读取数据是一个异步操作。您不能从回调中返回值。您需要将回调传递给接收获取值的 redis_get 函数。

function redis_get(key, callback) {
    client.get(key, function(err, value) {
        if(err) {
            console.error("error");
        } else {
            callback(value); // or maybe callback(JSON.parse(value));
        }
    });
}

并获取一个值:

redis_get("key", function(redis_items) {

});

关于javascript - 将 redis 与 node.js 一起使用时无法获取有效列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14110798/

相关文章:

javascript - Soundcloud auth popup callback.html 连接后永不关闭

Javascript 双冒号 lambda

redis 拒绝启动

redis - 我如何匹配redis中的正则表达式模式

Redis - 如何将具有相同键的多行加载到 Redis 中?

javascript - 如何使此下拉菜单在单击后处于事件状态?触摸后不

javascript - jquery提交和button提交的区别

javascript - 在更高的数字上显示元素

javascript - 使用 passport.authenticate 后注册

javascript - 在 node.js 中传递对 express-resources 的引用?