Redisson은 Redis를 이용한 분산 환경에서의 락 관리, 캐시, 이벤트 시스템 등을 편리하게 제공하는 Java Redis 클라이언트이다.
이때, 락을 획득하지 못한 스레드를 대기시키고 다시 깨우는 과정을 pub/sub 방식으로 처리한다.

전제 : Redis에 대한 기본 설정은 완료되었다고 가정한다.
build.gradle에 아래 의존성 추가
// Redisson 의존성
implementation("org.redisson:redisson-spring-boot-starter:3.52.0")
Spring Boot가 실행되면 자동으로 RedissonClient Bean이 생성되어 사용할 수 있다.
tryLock 파라미터 설명RLock.tryLock(waitTime, leaseTime, TimeUnit)
- waitTime : 락 획득을 위해 최대 얼마나 기다릴지
- leaseTime : 락 유지 시간
- leaseTime을 지정하면 → 해당 시간이 지나면 자동 해제됨
- leaseTime을 지정하지 않으면 → 기본 TTL 30초 + Watchdog이 자동으로 연장
public void addLike(Long postId) {
RLock lock = redissonClient.getLock(key + postId.toString());
try {
// 3초 동안 락 획득 대기, 락을 얻으면 1초간 유지
boolean available = lock.tryLock(3, 1, TimeUnit.SECONDS);
// 락 획득에 실패한 경우
if(!available) {
log.info("락 획득 실패");
return;
}
// 비즈니스 로직 실행
postService.addLike(postId);
} catch (InterruptedException e) { // 예외처리
throw new RuntimeException(e);
} finally {
// 비즈니스 로직 실행 후, 락 해제
lock.unlock();
}
}