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 는 연결 리소스를 관리하고 더이상 연결이 필요없으면 리소스를 해제한다.
- 리소스 사용 측면에서 효율적인 관리를 지원한다.
반응형
'인프라 > 용어' 카테고리의 다른 글
Orchestration Service (오케스트레이션 서비스) 란? (0) | 2023.12.19 |
---|---|
Redis Sentinel 이란? (0) | 2023.04.10 |
레디스 (Redis) 란? (0) | 2023.04.08 |
publish-subscribe pattern (pub sub pattern, 발행자 구독자 패턴) 이란? (0) | 2023.04.08 |
AOF (Append Only File) 란? (0) | 2023.04.08 |