如果你的 Spring Boot 项目中已经配置了 RedisTemplate,那么可以直接使用 `@Autowired` 注解来注入 RedisTemplate 对象,无需进行 Redis 的配置。以下是一个示例:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class RedLockExample {
@Autowired
private RedisTemplate redisTemplate;
public void doSomethingWithLock() {
// 创建 Redisson 客户端
Config config = new Config();
config.useSingleServer().setAddress("redis://localhost:6379");
RedissonClient redissonClient = Redisson.create(config);
// 创建 RedLock 对象
List locks = new ArrayList<>();
locks.add(redissonClient.getLock("lock1"));
locks.add(redissonClient.getLock("lock2"));
locks.add(redissonClient.getLock("lock3"));
RLock redLock = redissonClient.getRedLock(locks);
try {
// 获取锁并执行需要保护的代码
boolean isLocked = redLock.tryLock(500, 10000, TimeUnit.MILLISECONDS);
if (isLocked) {
System.out.println("Lock acquired");
// do something...
} else {
System.out.println("Failed to acquire lock");
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} finally {
// 释放锁
redLock.unlock();
redissonClient.shutdown();
}
}
}
```
在上面的示例中,我们使用 `@Autowired` 注解来注入 RedisTemplate 对象,并在获取锁时直接使用了该对象。需要注意的是,如果你的 Redis 配置与默认配置不同,那么需要在项目中进行相应的配置。