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

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 实现伪代码
一锁:先加一个分布式锁
二判:判断请求是否执行成功过
三更新:执行更新的业务逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值