一、失效场景说明 环境是Redis集群,下面主要列举三种场景,其中场景一和场景二在开发过程中会经常遇到。场景三出现的机率比较小,但是能加深我们对分布式锁的理解。 二、失效场景场景一(Redisson) 在事务内部使用锁,锁在事务提交前释放 2.1 场景描述 假设有这样一个需求:创建付款单,要求不能重复创建相同业务单号的付款单。为了保证幂等,我们需要判断数据库中是否已经存在相同业务单号的付款单,并且需要加锁处理并发安全性问题。 paymentOrderLambdaQueryWrapper = new LambdaQueryWrapper<>(); paymentOrderLambdaQueryWrapper.eq(PaymentOrder::getBizNo,paymentOrder.getBizNo()); //判断数据库中是否存在相同业务单号的付款单 long count = this.count(paymentOrderLambdaQueryWrapper); //存在相同业务单号的付款单则抛异常 if(count>0){ throw new RuntimeException...