Redisson是怎么实现分布式锁的
分布式锁:Redisson 提供了一种简单而强大的方式来实现分布式锁。
它支持多种锁模式,如公平锁、可重入锁、读写锁等,并且提供了锁的超时设置和自动释放功能。
锁的获取
在Redisson中常见获取锁的方式有
lock() 方法 与 tryLock() 方法
我们先来阐述两者的区别,再分析它们的源码。
lock() 与 tryLock() 的区别
(1)返回值: lock() 是没有返回值的;tryLock() 的返回值是 boolean。
(2)时机:lock() 一直等锁释放;tryLock() 获取到锁返回true,获取不到锁并直接返回false。
(3)tryLock() 是可以被打断的,被中断的;lock是不可以。
// 使用 lock() 方法获取锁
RLock lock = client.getLock(“myLock”);
lock.lock();
try {
System.out.println(“获取锁成功,执行被保护的代码…”);
} finally {
lock.unlock();
}
// 使用 tryLock() 方法获取锁
lock = client.getLock(“myLock”);
if (lock.tryLock()) {
try {
System.out.println(“获取锁成功,执行被保护的代码…”);
} finally {
lock.unlock();
}
} else {
System.out.println(“获取锁失败,无法执行被保护的代码…”);
}