开发者社区> 问答> 正文

mongodb 高并发写入覆盖原有数据

我有一个product表数据, 它会产生10个coupon, 我在product表的字段里存了coupon_count的字段为10, 如果抢红包的话根据coupon_count的剩余数来生成红包(抢红包coupon_count 减一)。
当1秒内并发上百的话, 会因为多个进程并发写入问题产生超过总是得红包。有什么方案可以解决这个问题?

1.web框架: flask
2.数据库: mongodb 3.2.6
4.使用orm框架: mongoengine

展开
收起
蛮大人123 2016-06-15 16:45:33 6236 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    会,mongodb没有事务,不会锁表,在你查询数量到写入的过程并非原子性的,所以高并发必然出问题。
    建议修改数据和查询接口,去适配一些mongodb的原子性操作来处理,比如先生成红包,抢红包时用findAndModify来查询并同步修改红包状态。

    2019-07-17 19:39:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载