美文网首页游戏编程研究院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://cnodejs.org/topic/53e4984371470ac05511fa87#5608d...

  • java锁机制

    场景 当多个请求同时操作数据库的时候,首先将订单状态改为已支付,在对应的金额上加上200,在同事并发场景查询条件会...

  • GCD并发执行多个请求(如AFNetworking)后执行结束处

    本篇笔记主要针对的场景问题:需要并发执行多个AFNetworking请求,并且在多个请求成功返回结果之后,根据它们...

  • Axios请求并发限制

    标签 NodeJS并发请求,并行请求,QPS限制,Axios并发限制,Axios并发请求 背景 由于调用第三方服务...

  • postgreSQL修改连接数

    近日由于开发的需要,写了多个对同一个数据库的各种查询应用。多应用集合测试中发现,当反复刷新重复向数据库请求数据的时...

  • 关于多个网络请求同步的一些总结

    等待多个并发请求同步回调 例如同时发起网络请求A,网络请求B,网络请求C,需等待A,B,C都返回了才进行回调。曾经...

  • Django基础知识(三)

    Django的查询集知识如下: 1、查询集表示从数据库获取的对象集合,查询集可以有多个过滤器。 2、查询集返回过程...

  • 数据库扩展知识点

    数据库并发控制在数据库中事务服务器包括了多个在共享内存中访问数据的进程:1、服务器进程主要是接受用户查询、执行查询...

  • 缓存一致性的常见方案

    Cache Aside Pattern - 旁路缓存模式 读请求:如果未命中缓存则查询数据库并更新至缓存,否则返回...

  • iOS 最近碰到的一些奇怪bug

    1.dispatch_group_t 场景:一般在并发多个网络请求都返回时,处理逻辑会用到。 dispatch_g...

网友评论

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

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