springboot Redisson使用
时间: 2024-12-27 13:25:10 浏览: 10
### 如何在 Spring Boot 中集成和使用 Redisson 分布式锁库
#### 添加 Maven 依赖项
为了使项目能够利用 Redisson 实现分布式锁功能,在 `pom.xml` 文件中需加入如下依赖:
```xml
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>${最新版本号}</version>
</dependency>
```
此依赖会自动配置必要的组件并简化集成过程[^1]。
#### 配置 application.yml 或 properties 文件
接着,应在项目的配置文件里指定连接到 Redis 的参数。对于 YAML 格式的配置文件而言,可以按照下面的方式设置:
```yaml
spring:
redis:
host: localhost
port: 6379
# Redisson 特定配置
redisson:
config:
singleServerConfig:
address: "redis://${spring.redis.host}:${spring.redis.port}"
```
上述配置指定了单节点模式下的 Redis 地址,并允许动态读取 spring.redis.* 下定义的相关属性值[^2]。
#### 编写服务类以获取分布式锁实例
创建一个新的 Java 类用于封装业务逻辑和服务方法。这里提供了一个简单的例子来说明如何获得一个名为 `myLockName` 的锁对象:
```java
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DistributedLockService {
private final RedissonClient redissonClient;
@Autowired
public DistributedLockService(RedissonClient redissonClient) {
this.redissonClient = redissonClient;
}
/**
* 尝试加锁执行特定任务
*/
public void performTaskWithLock() throws InterruptedException {
RLock lock = redissonClient.getLock("myLockName");
try {
boolean isLocked = lock.tryLock(10, TimeUnit.SECONDS);
if (isLocked){
System.out.println(Thread.currentThread().getName()+"获得了锁!");
// 执行受保护的任务...
Thread.sleep(5_000); // 模拟耗时操作
System.out.println(Thread.currentThread().getName()+"释放了锁...");
}else{
System.err.println("未能成功获取锁.");
}
} finally {
if(lock.isHeldByCurrentThread()){
lock.unlock();
}
}
}
}
```
这段代码展示了怎样通过注入 `RedissonClient` 来管理分布式的 Reentrant 锁(`RLock`),并通过尝试锁定机制确保线程安全地访问临界区内的资源。
阅读全文