본문 바로가기

Development/DB, JPA

Is Redis-connection-pooling necessary ? (lettuce)

기본적으로 Blocking, Single Thread 이다

Lettuce 는 여러 스레드 사이에서 하나의 connection을 공유하더라도 thread-safe 하게 동작하도록 설계되어 있으며, auto-reconnection설정도 defualt이다. 그래서 대부분의 경우에는 Connection pooling이 필요없다.

또한 어차피 모든 레디스 사용자 Operation은 싱글 스레드기반으로 수행되기 때문에, 여러 커넥션을 사용한다 하더라도 어플리케이션 성능이 좋아지지도 않는다.

그러면 언제 유용한가?

제한적으로 사용되며, 당연히 복잡도와 유지보수의 비용은 들어간다. Redis의 blocking operation은 보통 해당 워커스레드에서 물고있는 커넥션을 통해 수행되는데, 그렇다면 커넥션을 필요로 하는 이 워커스레드의 수 자체가 dynamic할 때는 의미가 있을 것이다. 그리고 가장 대표적인 경우는 Redis Transacion을 사용할 때이다.

 

 

참고 : https://lettuce.io/core/release/reference/index.html#connection-pooling.is-connection-pooling-necessary