目录
上一篇:springboot2.2.X手册:是时候用Lettuce替换Jedis操作Redis缓存了
上一篇中我们讲解了redis,主要是因为接下来的更新,都会涉及到redis的操作,所以就放在上一篇了。
今天我们主要讲解重复提交的问题,这种问题,算是比较常见,但是又容易出问题,加上现在基本上都是微服务架构,今天来聊一下在分布式系统下,如果防止重复提交。
什么是幂等性
小编以前面试过一家公司,被问到什么是幂等性,当时不懂,就瞎扯了一番,惨遭面试官鄙视。
幂等性指的是多次运算结果一样,用公式来表示就是F(F(x))=F(x)。
在我们的对数据库的操作中,以下操作就是幂等性
select查询就是最基础的幂等性
delete删除也是一样,删除多少次都是一样的结果
update这里分两种,如果是更新某个值,那就是幂等性;如果是更新累加操作的,那就是非幂等性。
insert是非幂等性操作,毕竟每次都增加一条,从而导致数据变化了
重复提交如何产生
重复问题发生的情况比较多,小编总结了一下以下几点
1、提交按钮点击两次
2、浏览器提交后进行后退操作,然后再一次提交
3、使用浏览器的历史记录进行重复提交表单
4、重复的请求浏览器的http请求
5、nginx不断重新发送
6、分布式RPC中,进行了try重试等