> 백엔드 개발 > PHP 튜토리얼 > 如何处理并发情况下涉及多个表下数据的操作?

如何处理并发情况下涉及多个表下数据的操作?

WBOY
풀어 주다: 2016-06-06 20:31:28
원래의
1195명이 탐색했습니다.

产品给的需求是: 做一个抽奖活动,用户每天的抽奖次数有限(根据其当天的消费行为获得),用户如果中奖,那么就要修改用户今天抽了几次,修改用户资产(发放奖励),增加一条log。

这里就涉及多个表需要防止并发,log表要防止并发insert, 用户表要防止并发update, 资产表要防止并发insert与update。

现在的问题是如何防止高并发时(包括恶意攻击)出现重复操作?

用队列处理只适合被抽奖的奖品有限的情况,但坑爹的产品还提出一种奖品数量没有限制的抽奖(抽奖发虚拟币)-_-#

回复内容:

产品给的需求是: 做一个抽奖活动,用户每天的抽奖次数有限(根据其当天的消费行为获得),用户如果中奖,那么就要修改用户今天抽了几次,修改用户资产(发放奖励),增加一条log。

这里就涉及多个表需要防止并发,log表要防止并发insert, 用户表要防止并发update, 资产表要防止并发insert与update。

现在的问题是如何防止高并发时(包括恶意攻击)出现重复操作?

用队列处理只适合被抽奖的奖品有限的情况,但坑爹的产品还提出一种奖品数量没有限制的抽奖(抽奖发虚拟币)-_-#

保证一致性和原子性就需要使用事务,我之前碰到这类问题的解决方案是写入队列,后台进程异步处理并使用事务来保证

redis inc数量,判断数量然后再插log

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿