SpringBoot+Redis分布式锁
发布时间:2021-03-04 12:50:40 所属栏目:评论 来源:互联网
导读:分布式锁的生成通常需要注意如下几个方面: 创建锁的策略: redis的普通key一般都允许覆盖,A用户set某个key后,B在set相同的key时同样能成功,如果是锁场景,那就无法知道到底是哪个用户set成功的;这里jedis的setnx方式为我们解决了这个问题,简单原理是:
|
分布式锁的生成通常需要注意如下几个方面:
下面来上段setnx操作的代码: 注意点在于jedis的set方法,其参数的说明如:
setnx如果失败直接封装返回false即可,下面我们通过一个get方式的api来调用下这个setnx方法: 上图能够看到只有一次set成功,并key具有一个有效时间,此时已到达了分布式锁的条件。 如何删除锁
上面是创建锁,同样的具有有效时间,但是我们不能完全依赖这个有效时间,场景如:有效时间设置1分钟,本身用户A获取锁后,没遇到什么特殊情况正常生成了抢购订单后,此时其他用户应该能正常下单了才对,但是由于有个1分钟后锁才能自动释放,那其他用户在这1分钟无法正常下单(因为锁还是A用户的),因此我们需要A用户操作完后,主动去解锁 (编辑:怀化站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

