使用redis的node.js:同步还是异步?

在我的应用程序(node / express / redis)中,我使用一些代码同时更新数据库中的多个项目:

app.put('myaction', function(req, res){

// delete stuff

db.del("key1");

db.srem("set1", "test");

// Add stuff

db.sadd("set2", "test2");

db.sadd("set3", "test3");

db.hmset("hash1", "k11", "v11", "k21", "v21");

db.hmset("hash2", "k12", "v12", "k22", "v22");

// ...

// Send response back

res.writeHead(200, {'content-type': 'application/json'});

res.write(JSON.stringify({ "status" : "ok" }));

res.end();

});

我可以确定在方法返回之前将执行所有这些操作吗?我关心的是异步处理。由于我不在db操作中使用回调函数,因此可以吗?

回答:

使用MULTI /

EXEC命令创建命令队列并连续执行它们。然后使用回调发送回连贯的响应(成功/失败)。请注意,您必须使用Redis的AOF来避免这种情况(在发生崩溃的情况下):db状态与您的逻辑不一致,因为仅执行了队列中的部分命令:即MULTI

/ EXEC在执行时不是事务性的。这是一个有用的

参考。

以上是 使用redis的node.js:同步还是异步? 的全部内容, 来源链接: utcz.com/qa/419876.html

回到顶部