如何解决接口数据重复问题?

1. 前端实现

    前端设置按钮的状态,提交以后就加载,成功以后再恢复正常状态。

    缺点:无法绝对保证不重复,但是前端实现可以减少网络请求

2. 后端通过幂等性来实现

2.1 幂等性概念

    幂等指多次操作产生的影响只会跟一次执行的结果相同,通俗的说:某个行为重复的执行,最终获取的结果是相同的,不会因为重复执行对系统造成变化。(同一个接口,多次发出同一个请求,必须保证操作只执行一次)

2.2 实现幂等口诀

    一锁二查三更新

2.3 幂等场景

    用户下单、抽奖

2.4 实现方式

2.4.1 token方式

    用户进入表单获取token,请求的时候带入token,后端判断传入的token是否存在,存在就直接提示重复,不存在存入Redis或者其他存储介质,token会有过期时间,一般5分钟

    缺点:并发时候会判断到token是不存在的,还是可能造成重复提交的问题,需要加分布式锁解决

2.4.2 唯一主键或者唯一索引

    这个字段是不能重复,比如用户表,用户名是不能重复,可以设置用户名为唯一索引。再比如活动表,用户id和活动id作为唯一索引

2.5 实现伪代码

    一锁:先加一个分布式锁 

    二判:判断请求是否执行成功过

    三更新:执行更新的业务逻辑

posted on 2024-08-24 10:08  一只小小的程序猿  阅读(66)  评论(1编辑  收藏  举报