当前位置: 首页 > 工具软件 > redis-mutex > 使用案例 >

Redis的应用--分布式锁

胡安怡
2023-12-01

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

 类似资料: