美文网首页游戏编程研究院pomelo 游戏开发
nodejs 并发请求查询数据库 返回多个重复状态

nodejs 并发请求查询数据库 返回多个重复状态

作者: 抓不住的风 | 来源:发表于2015-09-28 14:21 被阅读1427次

    (https://cnodejs.org/topic/53e4984371470ac05511fa87#5608d7e9148959375f34ff73)

    var index = parseInt(Math.random() * 4);var events= require('events');var x = new events.EventEmitter();var jpCount = 5; //conn.query(“select * from giftinfo” , function(row){ })x.on('lingjiang',lingjiangHandle);function lingjiang(user) { if (jpCount > 0){ x.emit('lingjiang', user); } else { console.log('奖品已领玩'); }}lingjiangHandle = function(user) { jpCount --; if (lingjiangSucceed) { console.log(user + '领奖成功'); } else { console.log(user + '领奖失败'); jpCount++; }}

    这么做是不正确的。
    很明显,你对数据库做了写操作,单单查询来判断是不够的。必须修改数据库成功,才能为用户颁发奖品,如果失败,则意味奖品不存在。
    还有一种就是同步缓存,在nodejs服务器记录一个奖品数作为查询和递减,数据库服务器只负责修改。但是nodejs服务器挂掉会导致这个缓存消失,每次重新启动nodejs服务器,需要先去数据库服务器确认当前可以领的奖品数。
    mongodb是存在写锁的。

    我的解决方法, 查询后, 直接更新数据库状态, 然后发放奖励.

    相关文章

      网友评论

        本文标题:nodejs 并发请求查询数据库 返回多个重复状态

        本文链接:https://www.haomeiwen.com/subject/sdmwcttx.html