왜 Lettuce가 아니라 Redisson을 사용하는가?

E.NO·2026년 3월 19일

1. 분산 락 구현이 더 단순하다

Lettuce를 사용할 경우 분산 락을 구현하려면 다음을 직접 처리해야 한다.

  • SETNX를 이용한 락 획득

  • TTL 설정

  • 락 소유자 식별값 관리

  • Lua 스크립트를 통한 안전한 해제

  • 락 재시도 로직

즉, 락 구현에 필요한 세부 로직을 모두 직접 작성해야 한다.

반면 Redisson은 RLock 같은 API를 제공하므로 Java의 Lock을 사용하듯이 락을 쉽게 적용할 수 있다.

예를 들어:

  • 락 획득

  • 대기 시간 설정

  • lease time 설정

  • unlock 처리

를 훨씬 간단하게 사용할 수 있다.


2. 분산 락 기능을 안정적으로 제공한다

Lettuce로 직접 구현한 락은 개발자가 TTL, unlock, 예외 처리 등을 모두 신경 써야 한다.

반면 Redisson은 분산 락에 필요한 기능을 라이브러리 수준에서 제공하므로 구현 실수를 줄일 수 있다.

특히 락 관련 기능은 단순해 보여도 실제로는 잘못 구현하면 락 누수, 잘못된 해제, TTL 만료 문제 등이 발생할 수 있다.

Redisson은 이런 부분을 추상화해서 제공하기 때문에 더 안정적으로 사용할 수 있다.


3. 재시도와 대기 전략을 쉽게 적용할 수 있다

Lettuce 기반 구현은 보통 SETNX 한 번 시도 후 실패 시 직접 로직을 작성해야 한다.

반면 Redisson은 락 획득 시:

  • 대기 시간(wait time)

  • 점유 시간(lease time)

을 설정할 수 있어
즉시 실패 전략뿐 아니라 대기 후 획득 전략도 자연스럽게 구현 가능하다.

즉, 쿠폰 발급이나 재고 처리처럼 “무조건 한 번만 시도하고 실패”가 아니라 “일정 시간 동안 락을 기다렸다가 성공시키는 방식”이 필요한 경우 Redisson이 더 적합하다.


4. Watchdog 기능을 지원한다

Redisson은 내부적으로 Watchdog 기능을 제공한다.

이 기능은 락을 획득한 스레드가 아직 작업 중이라면 락 만료 시간을 자동으로 연장해주는 기능이다.

즉, 예상보다 비즈니스 로직이 오래 걸려도 락이 중간에 만료되어 다른 요청이 잘못 들어오는 상황을 줄일 수 있다.

Lettuce로 직접 구현하면 이런 부분도 직접 관리해야 한다.


5. 코드 가독성과 유지보수성이 좋다

Lettuce 기반 락은 보통 다음과 같은 코드가 필요하다.

  • Redis key 생성

  • UUID 생성

  • setIfAbsent

  • TTL 지정

  • finally에서 Lua script unlock

반면 Redisson은 비교적 단순한 형태로 작성할 수 있다.

즉, 비즈니스 로직에서 락 코드가 더 직관적으로 보이고유지보수도 쉬워진다.


Redisson을 선택하기 좋은 상황

Redisson은 다음과 같은 경우 특히 적합하다.

  • Redis를 이용한 분산 락이 핵심인 경우

  • 선착순 쿠폰, 재고 차감, 입찰처럼 동시성 제어가 중요한 경우

  • 락 재시도, 대기, 자동 연장 같은 기능이 필요한 경우

  • 직접 락 로직을 구현하기보다 안정적인 라이브러리를 사용하고 싶은 경우


최종 정리

Lettuce는 Redis와 통신하기 위한 기본 클라이언트이고, Redisson은 Redis를 기반으로 분산 락과 같은 고수준 기능을 제공하는 라이브러리이다.

따라서 단순한 Redis 데이터 접근에는 Lettuce도 충분하지만, 분산 락처럼 동시성 제어가 중요한 상황에서는 락 획득/해제, 재시도, lease time, watchdog 등을 안정적으로 제공하는 Redisson이 더 적합하다.

0개의 댓글