1.需求背景 在一些写接口的场景下,由于一些网络因素导致用户的表单重复提交,就会在相邻很短的时间内,发出多个数据一样的请求.后台接口的幂等性保证一般都是先检查数据的状态,然后决定是否进行执行写入操作,最后更新状态.那么在这个很短的时间内,数据可能还没来及写入,多个请求同时进入了状态判断的逻辑,此时就可能绕过检查,执行多次重复的写入. 在此给出的解决方案是,使用redis分布式锁,控制用户的请求串行处理:客户端的请求进入时,基于用户的维度进行抢锁,抢到了就可以往下执行逻辑,抢不到锁的请求直接被拒绝