redisson实现分布式锁代码
时间: 2023-07-07 11:22:01 浏览: 222
redisson实现分布式锁
好的,下面是Redisson实现分布式锁的Java代码示例:
```java
import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
public class DistributedLock {
private RedissonClient redissonClient;
public DistributedLock() {
// 创建配置
Config config = new Config();
// 设置redis地址和密码
config.useSingleServer().setAddress("redis://127.0.0.1:6379").setPassword("password");
// 创建RedissonClient实例
redissonClient = Redisson.create(config);
}
/**
* 获取锁
*
* @param lockKey 锁的键
* @param leaseTime 锁的持有时间,单位为毫秒
* @param waitTime 等待获取锁的时间,单位为毫秒
* @return 是否获取到锁
*/
public boolean lock(String lockKey, long leaseTime, long waitTime) {
RLock lock = redissonClient.getLock(lockKey);
try {
// 尝试获取锁
return lock.tryLock(waitTime, leaseTime, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
return false;
}
}
/**
* 释放锁
*
* @param lockKey 锁的键
*/
public void unlock(String lockKey) {
RLock lock = redissonClient.getLock(lockKey);
// 释放锁
lock.unlock();
}
/**
* 关闭RedissonClient实例
*/
public void close() {
redissonClient.shutdown();
}
}
```
使用方式如下:
```java
DistributedLock lock = new DistributedLock();
try {
if (lock.lock("lockKey", 5000L, 5000L)) {
// 获取到锁,执行业务逻辑
} else {
// 获取锁失败
}
} finally {
lock.unlock("lockKey");
lock.close();
}
```
其中,`lockKey`是锁的键,`leaseTime`是锁的持有时间,`waitTime`是等待获取锁的时间。在使用完锁后,一定要记得释放锁并关闭RedissonClient实例。
阅读全文