在我的应用程序(node/express/redis)中,我使用一些代码同时更新DB中的多个项目:
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();
});
Run Code Online (Sandbox Code Playgroud)
在方法返回之前,我能确定所有这些操作都会执行吗?我担心的是异步处理.因为我不在db动作中使用回调函数,这样会好吗?
虽然发送所有命令并异步解析响应,但注意回调都按顺序调用是很有用的.因此,您可以使用最后一个Redis命令的回调将响应发送到客户端,然后您将知道在响应之前已执行所有Redis命令.