关于mysql并发重复插入问题

1.出现问题的场景
1.网络延时,或者使用FD工具模拟请求

sql
select time form 订单 where uid='15' order by time desc limit 0,1
if(当前时间-time<15){
exit(请勿频繁请求);
}

INSERT INTO 订单 (time, uid,...) VALUES (值1, 值2,....)

下面还有个CURL请求
if(CURL 请求成功){

}else{

}

问题:
搞并发或者网络不稳定情况下..出现了重复插入..没有拦截到..还是进入了curl

需要在进入curl请求前拦截..

阅读 3.7k
3 个回答

不要让你的表单重复提交

重复请求的处理,主要看你的条件需求。

如果限制同一客户端同一时间只能同一请求。很简单的做法就是,将客户端请求标识放入缓存中。
并在每次访问前判断当前翻个看是否已经有访问请求,有则打回这个请求。反之,则正常处理。

同样客户端,网络层,数据库都可以做同样类似的措施避免重复插入。

表单重复提交这一点首先要控制,写入时先进行判断,跳过并写入日志

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