Redis 커넥터 Lettus와 Jedis

유정현·2024년 3월 22일

Lettus와 Jedis

SpringBoot에서 Redis를 사용하기 위해서 커넥터를 사용해야하는데 Lettuce와 Jedis가 있다. 이제 redis를 도입해보기 위해서 두 가지 모두 공부를 조금 해봤다.

Jedis

  • 직관적이고 쉽게 사용할 수 있다. 사용법이 간단하다.
  • Blocking 연산을 처리할 때는 별도의 스레드가 필요하다.
  • 스레드 세이프하지 않으므로, 멀티스레드 환경에서 안전하게 사용하기 위해서는
    각각의 스레드에서 별도의 Jedis 인스턴스를 사용해야한다.
  • 주로 단일 서버에서 사용된다.

Lettuce

  • 비동기 및 논블로킹 통신을 지원한다.
  • 비동기 및 논블로킹 연산을 효율적으로 처리할 수 있어, 높은 성능과 확장성을 제공한다.
  • Reactive 프로그래밍 모델을 지원하므로, Reactor나 RxJava와 같은 라이브러리와 통일하기 쉽다.
  • 스레드 세이프하며, 단일 연결을 통해 여러 요청을 처리할 수 있다.

비동기 및 논 블로킹 통신

내가 이해하기로는 Lettuce는 이벤트 큐 같은 메커니즘을 사용하는 것 같다. 그렇기 때문에 비동기적으로 여러 요청을 처리하고, 논블로킹 IO를 구현하는 것이다. 반면 Jedis는 기본적으로 동기적인 방식으로 동작하며, 각 스레드가 동시에 Jedis 인스턴스에 접근할 수 있다.

블로킹
어떤 작업이 완료될 때까지 대기하는 것으로, 한 스레드가 어떤 작업을 진행 중이고, 그 작업이 완료될 때까지 다른 스레드가 해당 작업을 기다려야 하는 상황이 발생할 수 있다.

논블로킹
어떤 작업이 완료될 때까지 대기하지 않고, 다른 작업을 수행할 수 있는 것을 의미한다. 한 스레드가 어떤 작업을 진행 중이더라도, 다른 스레드는 대기하지 않고 다른 작업을 처리할 수 있다.

결론

어쨌든 결론적으로 Lettuse를 많이 쓴다. 그리고 가장 중요한게 Lettuse는 비동기 및 논블로킹 통신을 지원한다는 것, 그리고 thread-safe 하다는 것이다. 결국 요즘에는 Lettuce를 많이 쓴다는 이야기가 있는데 그 이유는 그저 성능이 조금 더 안정적이기 때문이지 않나 싶다. 더해서 좀 더 추측해보자면, 요즘 시대에는 정보처리량이 점점 늘어나고 있기 때문에 당연히 여러 요청을 조금 더 잘 처리할 수 있는 Lettuce를 쓰지 않을 이유가 없는 것 같다.

profile
코딩하는 감자입니다.

0개의 댓글