收藏
回答

云开发的数据库如何解决并发导致的超售问题?

假设场景:

商品库存:100 件,将会有 1W 人参与抢购。

这势必会造成并发请求时,判断到有货就销售出去了,实际是好几个并发同时减库存。导致库存成了负数,商品超售。

传统解决方式多种多样,我使用的是下订单进队列,队列一行一行处理。在云开发上合适用什么方法来解决并发可能带来的超售问题呢?

最后一次编辑于  2020-04-20
回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    2020-04-20

    你是用update吧,在where里加一条判断,数量大于0才进行update的_.inc(-1)

    2020-04-20
    有用 1
    回复 7
    • 🍞
      🍞
      2020-04-20
      懂了,那我明白最佳回答的是怎么回事了。 https://developers.weixin.qq.com/community/develop/doc/0002ec4c2a09b06b7a08b380751800
      2020-04-20
      回复
    • 老张
      老张
      2020-04-20回复🍞
      汗。链接里和我说的是一种方法吧。
      2020-04-20
      回复
    • 🍞
      🍞
      2020-04-20回复老张
      嗯,是一种。我刚看的时候脑筋没转过来。看了你的回答,注意到了 where。
      2020-04-20
      回复
    • 停
      2020-07-23
      看了几个相关问题的回答,覚的有些莫名其妙,真的并发起来这样也没法处理啊。如果两个用户同时最后还剩一个,也可以执行inc操作,只不过最后会把库存结果置为-1,还是没法解决问题。。。如果以库存结果大于0为判断标准,那又可能两人同时买的时候最后一个物品谁都买不着,并不是一个十全十美的解决办法啊
      2020-07-23
      回复
    • 老张
      老张
      2020-07-24回复
      where({count:_.gt(0)}).update({date:{count:_.inc(-1)}})
      这是一个原子操作,不可能两个人同时操作。
      2020-07-24
      回复
    查看更多(2)
登录 后发表内容
问题标签