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

©️2020 CSDN 皮肤主题: 像素格子 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值