Redis的应用--分布式锁

Redis

应用

分布式锁

  1. 互斥
  2. 死锁
  3. 容错
解决方案
  1. 正常使用redis的nx数据,下面的语句,key使用对应的前缀+主键,value使用一个随机值UUID,超时时间设置为30秒。
set key value nx 30

解锁:使用lua脚本,获取key值,判断和原先存起来的随机值相同吗,相同就删除,不相同表示redis中的这条数据不是你插入的,就不能删

  1. 基于Redis的RedLock,需要在集群环境中进行,同样的操作,但是需要保证同时在集群一半以上的机器上加上锁,才算是加锁成功。解锁同样
  2. 基于Zookeeper,设置一个临时节点(在自己的机器挂掉之后,会自动删除这个节点),设置成功就加锁,设置不成功这设置一个监听器,监听这个节点删除的事件
设置不成功这设置一个监听器,监听这个节点删除的事件

设置不成功,加一个CountDownLatch阻塞线程
监听器中释放CountDownLatch

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值