gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:56:51 28 4
gpt4 key购买 nike

我对 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com