要扣除用户余额 100 ,以前大学学过一点 java EE,正常就是
1.SELECT `余额` FROM user;
2.余额 >= 100 则 UPDATE
3.否则提示用户余额不足
现在请求并发太高,查询的余额还没来得及更新,导致超扣了
我目前的解决办法:
1.把扣除余额请求放到自己实现的 redis 队列里
2.使用一个 thread 定时轮询队列,多 thread 我怕又出现并发问题,0.5s 轮询一次,处理过程中停止轮询
保证只有一个线程在处理数据
3.客户端开个 socket 连接,做一些加载动画,等待跳转的动作,等 socket 更新数据
我感觉这样就很不优雅
有什么能在 mysql 层面解决这个问题的吗?
1.SELECT `余额` FROM user;
2.余额 >= 100 则 UPDATE
3.否则提示用户余额不足
现在请求并发太高,查询的余额还没来得及更新,导致超扣了
我目前的解决办法:
1.把扣除余额请求放到自己实现的 redis 队列里
2.使用一个 thread 定时轮询队列,多 thread 我怕又出现并发问题,0.5s 轮询一次,处理过程中停止轮询
保证只有一个线程在处理数据
3.客户端开个 socket 连接,做一些加载动画,等待跳转的动作,等 socket 更新数据
我感觉这样就很不优雅
有什么能在 mysql 层面解决这个问题的吗?