Redis Jedis vs Lettuce

보트·2023년 8월 7일
0

Redis

목록 보기
2/2

Jedis

  • 다른 Redis Java 클라이언트에 비해 가벼움
  • 적은 기능을 제공하지만 많은 양의 메모리 처리 가능
  • 동기 통신 지원
  • Jedis pool 이용하면 멀티 스레드 환경에서 동작 가능 (모든 풀이 사용 중일 경우 요청과 응답 사이 블로킹이 발생해 어느 정도의 유휴상태에 빠질 수 있음)
    -> 동기적 연결만 지원한다면 트래픽이 몰렸을 때 병목현상 발생할 수 있음
    (https://github.com/redis/jedis)
    (https://github.com/spring-projects/spring-session/issues/789)

Lettuce

  • 확장성 높음, Spring 2.0 부터 기본 Redis가 jedis -> lettuce로 변경
  • non-blocking 기능
  • 동기, 비동기, 리액티브 프로그래밍 모델 지원
  • cluster, sentinel, pipelining, codecs 지원
  • 다중 연결 처리
  • Jedis에 비해 사용이 어려움
    (https://lettuce.io/core/release/reference/)

기능

  • Cluster
    Distributed Redis Setup 과 상호작용 할 수 있는 api set 제공
    클러스터 노드 자동으로 발견
    토폴로지 변경 처리
    적절한 노드로 명령 라우팅 가능
  • Sentinel
    Redis 설정에 문제가 발생했을 때 모니터링, 알람, 자동 페일 오버 제공
    분산 환경에서 Redis와 함께 동작
    Redis 전체적인 상태와 신뢰성 유지
  • Codecs
    레디스에 데이터가 어떤 형식으로 저장될지 결정하는 직렬화, 역직렬화 기법 선택 가능
  • Pipeline
    여러개의 요청을 pipeline에 담아 한 번에 요청
    (https://redis.io/docs/manual/pipelining/)
  • Auto-reconnect and timeout handling
    어플리케이션의 연속성 보장
    레디스가 한 작업을 오래 잡고 있는 것 방지

Spring에서 사용

(https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/)

lettuce 선택 이유

  • TPS/CPU/Connection 개수/응답속도 등 성능 jedis < lettuce
  • 확장성이 높음

(https://jojoldu.tistory.com/418)
(https://gist.github.com/warrenzhu25/1beb02a09b6afd41dff2c27c53918ce7#why-lettuce)

profile
일주일에 한 번

0개의 댓글