收藏
回答

使用云函数操作数据库如何达到乐观锁的功能?

在使用云函数对数据库进行更新一条记录时,想要达到mysql中类似乐观锁的功能。

举例场景如下:某活动奖品的数量为5,中奖人数不能超过奖品数量。

流程如下:先查询已经中奖人数为4,判断中奖数量4小于奖品数量5,则任然可以中奖,再更新中奖数量为5;

高并发下存在问题:若在查询中奖数量为4之后,已经有其他用户也中了奖,此时最新数据为5了,则此事务中更新为5的操作应当失败。

需要使用乐观锁,或者类似分布式锁来实现。请问云函数如何实现?

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

1 个回答

  • 跨商通
    跨商通
    2022-11-08

    https://developers.weixin.qq.com/community/develop/article/doc/000ce613384d885cedce5bae256813

    2022-11-08
    有用 1
    回复 8
    • 南
      2022-11-08
      感谢
      2022-11-08
      回复
    • 南
      2022-11-08
      但是使用where又不支持事务,后续还要在其他表里插入数据,无法保证这些操作的原子性。
      2022-11-08
      回复
    • 跨商通
      跨商通
      2022-11-08回复
      inc是原子操作。
      2022-11-08
      回复
    • 南
      2022-11-08
      除了操作这个数据库,还要在其他数据库增加记录,两个数据库的操作要原子性。但是where又不支持事务
      2022-11-08
      回复
    • 跨商通
      跨商通
      2022-11-08回复
      你基于秒杀的结果,再去其他库表里增加记录,就不需要用到事务了。这段代码本身就是为了在不使用事务的情况下实现秒杀功能的。
      2022-11-08
      回复
    查看更多(3)
登录 后发表内容