一尘不染

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

redis

在我的应用程序(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操作中使用回调函数,因此可以吗?


阅读 549

收藏
2020-06-20

共1个答案

一尘不染

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

2020-06-20