redis 分布式锁

利用redis分布式锁来实现线程的安全,当执行某一动作时,将特定的key,存入redis,每次执行该动作时,都到redis进行存值校验,当且只有存入成功时才执行动作。

redis 分布式锁设计模式:

set key value NX EX max-lock-time

解析:

存入一个键值,当且只有该键值不存在的情况下返回成功,如果该键值已经存在返回nil,该设计就是为了防止A线程动作操作期间,其他线程执行该动作,EX,设置锁的过期时间,防止调用线程因其他原因死掉或者挂起而无法正常的释放锁,而造成其余线程的阻塞,这里有EX(秒)、PX(毫秒)两种时间单位可选。

正常的释放锁机制:

也就是当一个线程调用完毕,释放锁,而非因为线程死掉或者挂起而导致的达到最大过期时间,redis服务器的对键的删除。正常释放锁,又要考虑,当A线程线程因为原因未能及时释放锁,而是因为超出了最大的所时间,被redis删除了锁,因为锁被redis释放,B线程又在redis中设置了锁,此时A线程执行了DEL,就会把B线程的锁释放。

因此在释放锁的机制也要考虑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值