Redisson(4)分布式锁之RedLock

Redis实现分布式锁的官方文档介绍

Redis的官方文档对用Redis分布式锁的难点以及解决方案的考虑做了一些说明,具体内容参见:https://redis.io/topics/distlock,译文参考:http://ifeve.com/redis-lock/

场景一:

保存锁的Redis的master节点挂了。这里不是说有slave就没问题了,因为Redis的数据复制功能(replication)是异步的,存在这样的可能,线程1获取到锁了,该锁在从master复制到slave之前,master挂掉了,然后slave提升为了master,这个时候线程2从新的master节点上是可以获取到锁的,之前的锁丢失了,这样会导致安全问题。

场景二:

对于锁“lock123”(名字随便取的),线程一获取到锁,设置过期时间为30s,但是真正业务执行时间超过了30s,比如说40s。在32s的时候线程二尝试获取锁,并且成功了,因为这个锁的超时时间是30s,在32s的时候,该锁已经失效了。当40s的时候,线程一业务执行完毕,这个时候尝试去释放锁,即删除锁,很不幸,这个时候线程二锁持有的锁会被线程一误删掉,因为它们的key相同。

解决方案:

set操作的时候,设置一个random value作为该key的value,在解锁的时候&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值