收藏
回答

小程序云开发,有锁表机制吗?

比如我的业务是购买一件东西,怎么通过锁表机制,锁定数据,防止没货了,并发时也能被购买到

回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    2020-11-24

    需要自己实现。

    比如每次都减去库存,库存==0就停止。

    db.collection('product').where({_id:product._id, stock:_.gt(0)}).update({data:{stock:_.inc(-1)}})

    上面这条语句,当stock==1时,1000个人同时运行,只有一个人能成功update,返回update.count==1,其他人都返回0

    2020-11-24
    有用 2
    回复 12
    • 小峰
      小峰
      2020-11-24
      但并发呢,并发的话,比如库存是1,然后1000人并发,没锁表就出问题
      2020-11-24
      回复
    • 老张
      老张
      2020-11-24回复小峰
      用原子操作啊,1000人只有一个人能update成功减库存,其他人都返回update失败啊。
      2020-11-24
      回复
    • 老张
      老张
      2020-11-24回复小峰
      db.collection('product').where({_id:product._id, stock:_.gt(0)}).update({data:{stock:_.inc(-1)}})
      2020-11-24
      回复
    • 小峰
      小峰
      发表于移动端
      2020-11-24回复老张
      好,多谢
      2020-11-24
      回复
    • up
      up
      2020-12-01回复老张
      你好 原子锁 是锁单个字段 还是单条记录? 你我更新stock字段的同时 能不能更新其他字段
      2020-12-01
      回复
    查看更多(7)
登录 后发表内容
问题标签