SpringBoot에서 Redis를 사용하기 위해서 커넥터를 사용해야하는데 Lettuce와 Jedis가 있다. 이제 redis를 도입해보기 위해서 두 가지 모두 공부를 조금 해봤다.
내가 이해하기로는 Lettuce는 이벤트 큐 같은 메커니즘을 사용하는 것 같다. 그렇기 때문에 비동기적으로 여러 요청을 처리하고, 논블로킹 IO를 구현하는 것이다. 반면 Jedis는 기본적으로 동기적인 방식으로 동작하며, 각 스레드가 동시에 Jedis 인스턴스에 접근할 수 있다.
블로킹
어떤 작업이 완료될 때까지 대기하는 것으로, 한 스레드가 어떤 작업을 진행 중이고, 그 작업이 완료될 때까지 다른 스레드가 해당 작업을 기다려야 하는 상황이 발생할 수 있다.
논블로킹
어떤 작업이 완료될 때까지 대기하지 않고, 다른 작업을 수행할 수 있는 것을 의미한다. 한 스레드가 어떤 작업을 진행 중이더라도, 다른 스레드는 대기하지 않고 다른 작업을 처리할 수 있다.
어쨌든 결론적으로 Lettuse를 많이 쓴다. 그리고 가장 중요한게 Lettuse는 비동기 및 논블로킹 통신을 지원한다는 것, 그리고 thread-safe 하다는 것이다. 결국 요즘에는 Lettuce를 많이 쓴다는 이야기가 있는데 그 이유는 그저 성능이 조금 더 안정적이기 때문이지 않나 싶다. 더해서 좀 더 추측해보자면, 요즘 시대에는 정보처리량이 점점 늘어나고 있기 때문에 당연히 여러 요청을 조금 더 잘 처리할 수 있는 Lettuce를 쓰지 않을 이유가 없는 것 같다.