Redission分布式锁

Redission分布式锁

使用及原理

//看门狗(锁)
RLock lock = redisson.getLock("myLock");
lock.lock();
lock.unlock();

加锁机制(源码Lua脚本分析1)

某个客户端要加锁,如果他面对的是一个redis cluster集群,他首先会根据hash节点选择一台机器。这里注意,仅仅只是选择一台机器!这点很关键!

紧接着,就会发送一段lua脚本到该redis机器上。为什么要使用lua脚本?因为一大坨复杂的业务逻辑,可以通过封装在lua脚本中发送给redis,保证这段复杂业务逻辑执行的原子性。



首先解释一下名词:

KEYS[1] ——你加锁的那个key,比如代码里我们获取锁是这样的:RLock lock = redisson.getLock("myLock")。这里你自己设置了加锁的那个锁key就是“myLock”。

ARGV[1] ——锁key的默认生存时间,默认30秒。

ARGV[2] ——加锁的客户端的ID,类似于这样:8743c9c0-0795-4907-87fd-6c719a6b4586:1

第一段if判断语句,就是用   exists myLock   命令判断一下,如果你要加锁的那个锁key不存在的话,你就进行加锁。

如何加锁?如第2行lua脚本,创建一个名为myLock的hash结构数据,在redis中的命令就是:

				hset myLock  8743c9c0-0795-4907-87fd-6c719a6b4586:1 1

而第3行lua脚本则会执行   pexpire myLock 30000   命令,设置myLock
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值