gpt4 book ai didi

javascript - 处理异步 Node redis 函数,同时在两个键上使用 INCR 很尴尬

转载 作者:可可西里 更新时间:2023-11-01 11:22:31 26 4
gpt4 key购买 nike

假设我的服务器正在准备发送一个新对象以响应 POST 请求:

var responseObj = {
UserID : "0", // default value
ItemID : "0", // default value
SomeData : foo
}

现在,当我创建这个新对象时,我想增加我在 Redis 中使用的 UserIdItemID 计数器来跟踪这两个项目。但这似乎需要两个单独的异步回调,这对我来说似乎是个问题,因为我不能将其余的响应编写代码粘贴到其中一个回调中。

我的意思是,如果我只需要担心一个键和一个回调,我会这样写:

app.post('/', function(req, res, next) {
// do some pre-processing

var responseObj = {};

redis.incr('UserID', function(err, id) {
responseObj.UserID = id;

// do more work, write some response headers, etc.

res.send(responseObj);
});
}

但是我需要做两个 INCR 回调怎么办?我不认为这是正确的,因为一切都是异步的,我不能保证我的响应会被正确设置...

app.post('/', function(req, res, next) {
// do some pre-processing

var responseObj = {};

redis.incr('UserID', function(err, id) {
responseObj.UserID = id;
// do some work
});

redis.incr('ItemID', function(err, id) {
responseObj.ItemID = id;
// do some work
});

res.send(responseObj); // This can't be right...
}

作为一个新手 node.js 和 redis 程序员,我觉得我错过了一些明显的东西......

最佳答案

您可以通过 transaction 在一次调用中执行多个 redis 命令或 lua script .这样一来,您就不必为每个命令处理一个回调,而是执行多个命令并只处理一个回调。例如,尝试查看 multi redis 客户端中的方法/命令。

关于javascript - 处理异步 Node redis 函数,同时在两个键上使用 INCR 很尴尬,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16911252/

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