跳到主要内容

重复提交问题

用 SpringBoot+Redis 解决海量重复提交问题

https://mp.weixin.qq.com/s/pRxIORkGo21c2SMY6XFkZA

幂等:任意多次执行所产生的影响均与一次执行的影响相同。

一般保证幂等性的几种手段

  • 数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据
  • token 机制,每次接口请求前先获取一个 token ,然后再下次请 求的时候在请求的header体中加上这个token,后台进行验 证,如果验证通过删除token,下次请求再次判断token
  • 悲观锁或者乐观锁,悲观锁可以保证每次for update的时候其他sql无法update数据(在数据库引擎是innodb的时候,select的条件必须是唯一索引 ,防止锁全表)
  • 先查询后判断,首先通过查询数据库是否存在数据,如果存在证明已经请求过了,直接拒绝该请求,
  • 如果没有存在,就证明是第一次进来,直接放行。