Redis做分布式锁--- 基于SETNX

Redis做分布式锁的原理:

SETNX命令(SET if Not eXists)

        当且仅当 key 不存在,将 key 的值设为 value ,并返回1;若给定的 key 已经存在,则 SETNX 不做任何动作,并返回0。

        可以利用该命令,在对应的业务代码中做锁处理。

        加锁,即,setnx,返回1,表示加锁成功,返回0,表示该段业务被上了锁。

        在被锁的业务中进行循环获取,直至锁释放。

        在加锁业务代码执行完毕之后,delete该key,释放对应的锁。

同时,要注意:

        1、在redis做集群的时候,如果master挂掉,集群重新选择master,导致旧有master未能将数据同步至所有的集群环境。出现加锁失败。

        2、在设置setnx命令时,切记加上expire time,防止死锁。

 

        还有啊,在做锁的时候,千万不要用什么exist先判断存不存在,当作锁,这个会有并发的,我这边测试,会出现俩台机器一起跑的情况呢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值