什么是幂等性?又如何保证?
小明 Lv6

什么是幂等性?

幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。
在增删改查4个操作中,尤为注意就是增加或者修改,因为查询只是读的操作,所以对于结果是不会有改变的;
删除只会进行一次,大部分情况下根据主键删除时,用户多次点击产生的结果也是一样的;
而修改和增加在重复提交的场景下会非常容易出现幂等性的问题。

如何保证幂等性

  • 唯一索引,防止新增脏数据。如新增用户数据,一般用户名是唯一的,所以,我们可以设置用户名字段唯一索引
  • token机制,防止页面重复提交。
    • 分为两个阶段,获取token和使用token。
      1、每次接口请求前先获取一个token,返回给前端;
      2、然后再下次请求的时候在请求的header中加上这个token后端进行验证,如果验证通过就删除token,这时,如果其他请求过来,则验证会不通过,就达到了防止重复提交的问题。
  • 悲观锁(并发高的话慎用) Synchronized(单机环境适用)/数据库悲观锁
  • 乐观锁 (可能循环时间长开销大) Lock(单机环境适用)/数据库乐观锁
  • 分布式锁(适用分布式系统)
    • 推荐使用第三方组件Redission实现

关注获取更多资源

image
 评论