인프라/용어

Lettuce 란? (feat. 레디스의 자바 클라이언트)

Jake Seo 2023. 4. 10. 23:15

Lettuce 란?

  • 고성능(high-performance), 확장 가능(scalable), 스레드 안전한(thread-safe) 레디스 자바 클라이언트이다.
  • 동기, 비동기, 리액티브 프로그래밍 모델 모두 지원한다.
  • Netty 프레임워크 위에 빌드된 비동기 이벤트 기반 네트워크 애플리케이션 프레임워크이다.
  • 다중 연결을 처리하기 위해 디자인되었다.
  • 강력하고 유연한 API 를 제공한다.

핵심 기능

커넥션 핸들링 (Connection handling)

  • standalone 연결 혹은 커넥션 풀의 일부인 커넥션 오브젝트를 통해 Redis 로의 커넥션을 관리한다.
  • 커넥션은 논블로킹으로 동작하며, 여러 스레드들과 효율적으로 동작하게 디자인되어 있다.

동기, 비동기, 리액티브 API

  • Lettuce 는 다양한 API 를 지원한다.
    • API 는 모두 레디스와 상호작용하기 위한 API 들이다.
    • 동기 API: 응답을 받을 때까지 연산이 블록된다. 사용하기 쉽고 직관적인 인터페이스를 제공한다.
    • 비동기 API: 비동기로 응답을 받았을 때 실행될 콜백함수를 등록하는 방식으로 사용할 수 있다. 호출하는 스레드를 블록시키지 않기 때문에 리소스 활용을 가능하게 하고 성능상 이득이 있다.
    • 리액티브 API: 리액티브 스트림 명세를 기반으로 한 비동기 API 이다. 비동기와 이벤트 버스 프로그래밍을 간소화하는 리액티브 프로그래밍 모델과 함수형 프로그래밍 모델을 제공한다.

클러스터 지원

  • 분산된 레디스 셋업 (Distributed Redis Setup) 과 상호작용할 수 있는 API 를 제공한다.
  • 클러스터 노드를 자동으로 발견한다.
  • 토폴로지 변경을 처리한다.
  • 적절한 노드로 명령을 라우팅할 수 있다.

Sentinel 지원

레디스 고급 기능 지원 (Advanced Redis features)

  • 파이프라이닝, 트렌잭션, 루아스크립팅과 같은 고급 기능을 지원한다.
  • 스트림, 위치 기반 정보 인덱싱, Redis 모듈 API 를 비롯한 Redis 데이터 구조 및 명령에 대한 지원도 제공한다.

코덱 (Codecs)

  • 레디스에 데이터가 어떤 형식으로 저장될지 결정하는 직렬화, 역직렬화 기법을 직접 선택할 수 있다.

자동 재연결과 타임아웃 핸들링 (Auto-reconnect and timeout handling)

  • 커넥션을 잃었을 때 자동으로 다시 커넥션을 맺어주는 기능이 있다.
    • 애플리케이션의 연속성을 보장한다.
  • 레디스가 한 작업을 너무 오래 잡고 있는 것을 방지하는 명령어 타임아웃도 제공한다.

리소스 관리 (Resource management)

  • Lettuce 는 연결 리소스를 관리하고 더이상 연결이 필요없으면 리소스를 해제한다.
  • 리소스 사용 측면에서 효율적인 관리를 지원한다.
반응형