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