redission分布式锁写法
时间: 2023-08-29 22:13:28 浏览: 163
Redisson是一个基于Redis的Java驻内存数据网格(In-Memory Data Grid)和分布式锁服务。Redisson提供了多种分布式锁的实现,包括可重入锁、公平锁、读写锁等等。
以下是一个简单的Redisson可重入锁的示例代码:
```java
import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
public class RedissonLockExample {
public static void main(String[] args) {
// 创建Redisson配置
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379");
// 创建Redisson客户端
RedissonClient redisson = Redisson.create(config);
// 获取可重入锁对象
RLock lock = redisson.getLock("myLock");
try {
// 尝试加锁,最多等待100秒,上锁后10秒自动解锁
boolean isLocked = lock.tryLock(100, 10, TimeUnit.SECONDS);
if (isLocked) {
// 成功上锁,执行业务逻辑
System.out.println("Get lock success!");
} else {
// 获取锁失败
System.out.println("Get lock failed!");
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
// 释放锁
lock.unlock();
}
// 关闭Redisson客户端
redisson.shutdown();
}
}
```
在以上示例代码中,首先创建了一个Redisson配置对象,并指定Redis的地址。然后创建了一个Redisson客户端,并通过该客户端获取了一个名为“myLock”的可重入锁对象。接着尝试获取锁,如果成功获取到锁,则执行业务逻辑。最后释放锁并关闭Redisson客户端。
需要注意的是,Redisson的可重入锁和Java的ReentrantLock类似,可以支持线程重入。在使用Redisson分布式锁时,需要保证所有的加锁和解锁操作都在同一个Redisson客户端实例中进行,否则会出现锁无法释放的情况。
阅读全文