幂等: 多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。
需要幂等场景:用户重复点击(网络波动) MQ消息重复 应用使用失败或超时重试机制
1.数据库唯一索引(新增)
不建议使用
2.token+redis(新增、修改)
3.分布式锁(新增、修改)
快速失败(抢不到锁的线程)控制锁的粒度
分布式锁,性能较低
使用token+redis来实现,性能较好
第一次请求,生成一个唯一token存入redis,返回给前端
第二次请求,业务处理,携带之前的token,到redis进行验证,如果存在,可以执行业务,删除token;
如果不存在,则直接返回,不处理业务