javascript - Node Redis : Multiple queries in different redis databases with same client

标签 javascript node.js redis

我对 Nodejs 及其异步方式不是很熟悉。 我正在尝试查询不同的 redis 数据库。

我有一个简单的函数可以从 redis 数据库中获取 key :

function get_key(client, key, db, callback) {
    if (key) {
            client.select(db, function(e, s) {
                    if (e) {
                            console.log('client.select err: ' + e);
                    } else if (s) {

                            client.get(key, function(e, s) {

                                    callback(e, s);
                                    return s;
                            });
                    }
            });
    }

    return

我正在使用它来查询多个数据库,如下所示:

get_key(client, key1, 0, function(e, s) {
    if (s) {
            // do stuff with s;
    } else {
            debug('e: ' + e);
    }
});

get_key(client, key2, 1, function(e, s) {
    if (s) {
            // do stuff with s;
    } else {
            debug('e: ' + e);
    }
});

但它不工作。但是如果我为每个查询创建不同的客户端,它就可以工作。我在十几个数据库中有查询,并且不希望每次查询时都创建一个新客户端。

有更好的方法吗?我不熟悉的“Node ”方式?谢谢。

最佳答案

异步函数将回调函数作为参数。该函数接近于立即返回,并且在工作完成后调用回调而不是阻塞调用者。所以你的第一个调用在它对 redis 的调用完成之前返回并且第二个调用是立即进行的,这可能会搞砸第一个调用,因为它们共享同一个客户端。

如果您只有两个调用,简单的答案是将第二个调用放在第一个调用的回调中。如果您需要连续进行大量异步调用,请考虑使用 promises或一些可用的库,如 async .

关于javascript - Node Redis : Multiple queries in different redis databases with same client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40091308/

相关文章:

javascript - 填写 PDF 表格

linux - 如何让这个 init.d 脚本在服务器重启时启动?

redis - 如何删除与 Redis 集群中的模式匹配的键

php - Javascript 等待 PHP 函数返回

node.js - 通过 Node.js 通过 Putty 连接 Azure 虚拟机?

javascript - 使用 AngularJS 在现有 JSON 文件中写入文本框值

node.js - nodejs 和 socket.io.js 路径解析

python - 在python中建立redis连接

javascript - 如何在 Javascript 中监视 UL 元素上的元素更改

javascript - 在 HTML5 Canvas 中高效还原 RGB