import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
public class RedissonExample {
public static void main(String[] args) {
// 配置Redisson连接到Redis服务器
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 {
// 尝试获取锁,最多等待10秒,上锁后30秒自动解锁
boolean isLocked = lock.tryLock(10, 30, TimeUnit.SECONDS);
if (isLocked) {
// 执行需要加锁的代码块
System.out.println("Lock acquired, performing critical section...");
} else {
System.out.println("Failed to acquire lock");
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
// 释放锁
lock.unlock();
System.out.println("Lock released");
}
// 关闭Redisson客户端
redisson.shutdown();
}
}
配置Redisson连接:
Config 类配置 Redisson 连接到 Redis 服务器。这里使用的是单节点模式 (useSingleServer),并设置了 Redis 服务器的地址。创建Redisson客户端实例:
Redisson.create(config) 创建一个 Redisson 客户端实例,用于与 Redis 交互。获取分布式锁对象:
redisson.getLock("myLock") 获取一个名为 myLock 的分布式锁对象。这个锁可以在多个 JVM 实例之间共享。尝试获取锁:
lock.tryLock(10, 30, TimeUnit.SECONDS) 尝试获取锁。参数分别为:等待锁的最大时间(10秒),锁的持有时间(30秒),以及时间单位。释放锁:
finally 块中确保锁被释放,避免死锁。关闭Redisson客户端:
redisson.shutdown() 关闭 Redisson 客户端,释放资源。这个示例展示了如何使用 Redisson 实现分布式锁,确保在多线程或分布式环境下对共享资源的安全访问。
下一篇:java neo4j
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站