【发布时间】:2017-03-27 02:24:46
【问题描述】:
也许这是一个愚蠢的问题,但是我问了一些朋友并谷歌了一段时间后,仍然找不到很好的解释。
例如,当一个用户发帖时,我会做以下操作:
- MySQL.insert(用户、postTitle、postBody、时间)
- Redis.incr user.totalPostCount
- Redis.set last10Posts
所以我的问题是,例如,如果1 成功但2 失败,我该怎么办?
忽略redis错误继续?那么user.totalPostCount 不正确。
重试redis.incr?重试失败怎么办?
将错误返回给最终用户说post fail 并让用户再次发布?
删除之前插入的帖子并向用户返回错误?
mysql.insert({user: user, postTitle: postTitle, postBody: postBody}, function(err, mysqlId) {
if(err) { return Error(500); }
redis.incr({user: user, totalPostCount}, function(err, result) {
if(err) { mysql.delete(mysqlId)}
setLast10Post({newPost: {postTitle...}}, function(err, result) {
if(err) {mysql.delete(mysqlId); redis.decr({user.totalPostcount})}
})
})
})
【问题讨论】:
-
为什么要关闭?我认为这很常见
标签: javascript php mysql node.js web-services