直播送礼接口应该如何解决并发问题

在直播APP中有给主播送礼物这样一个场景,

大概的逻辑是:
1:判断用户礼物数量是否足够
2:如果够,则用户礼物数量-1,增加主播的威望

遇到的问题:
在用户刷礼物连击,快速点击送礼按钮的时候,通常会遇到这种情况,在判断礼物数量的时候,上一次送礼请求没有完成,这时候,用户礼物数量是够的,然后过了这个判断,上一次请求完成了,这时候仍要执行扣除礼物数量的操作,这时候,礼物数量就变成了负数了。

请问,这种情况该如何防止礼物数量出现负数的情况。

阅读 5.7k
4 个回答

如果我是你 , 我会考虑直接上redis , 有时候单线程的东西还是有很大好处的 .
其次 , 从你的应用场景出发 , 短时间多次点击 , 简直就是redis绝佳的用武之地 .
泥 , 还在考虑什么 ?

1.从前端讲的话,希望你用promise,点了送礼后,让按钮灰掉等接口返回后再让按钮可用
2.从后端讲你update的时候加个where number >0;他就不会成负数了,后面的update会失败。

队列处理,并行转为串行,这个时候判断的礼物数量就是正确的

这种情况后端应该用消息队列,或者加锁策略,
前端可以在每次页面打开时就把余量请求过来,避免展示负数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题