幂等性
一、什么是幂等性
幂等性就是一个方法短时间内被多次调用,但是产生的结果和只调用一次的结果相同,那么这个操作就是幂等的。比如select操作天然幂等。
二、请求方式的幂等性
在常见的4中请求方式中,get、delete、put请求都是幂等的,只有post请求不幂等。
三、幂等性场景
1、查询操作:select是天然的幂等操作;
2、删除操作:删除操作也是幂等的,删除一次和多次删除都是把数据删除;
3、唯一索引:防止新增脏数据。比如:支付宝的用户账户和资金账户,每个用户只能有一个资金账户,给资金账户表中的用户ID加唯一索引,防止给用户创建多个资金账户。要点:唯一索引或唯一组合索引来防止新增数据存在脏数据(当表存在唯一索引,并发时新增报错时,再查询一次就可以了,数据应该已经存在了,返回结果即可);
4、token机制:防止请求重复提交;
5、悲观锁
6、乐观锁
7、分布式锁
在项目中推荐使用第4中方法保证接口幂等性,防止请求重复提交,在拦截器中添加可以应用全局,具体实现方式可以参考我的另一篇文章: