Redis가 싱글 쓰레드로 만들어진 이유
Redis 가 단일 쓰레드(Single-Threaded) 로 설계된 이유는 주로 성능 최적화, 복잡성 감소, 그리고 데이터 일관성을 유지에 있음.
단일 쓰레드 모델은 멀티쓰레드 모델에 비해 설계와 구현이 상대적으로 간단함. 멀티쓰레드 환경에서는 동시성 문제(레이스 컨디션, 데드락 등) 처리하기 위해 복잡한 동기화 메커니즘이 필요하지만, 단일 쓰레드 환경에서는 이런 문제를 자연스럽게 회피할 수 있음.
동시에 여러 쓰레드가 동일한 데이터를 수정하려고 할 때 발생할 수 있는 데이터 불일치 문제를 방지함. 모든 명령어가 순차적으로 처리되기 때문에, 복잡한 락(Lock) 메커니즘 없이도 데이터의 일관성을 자연스럽게 유지할 수 있음.
Redis 는 주로 메모리 내에서 빠르게 수행되는 I/O 작업을 처리하는 인메모리 데이터베이스로 설계되어, 매우 빠른 응답 시간을 제공함. 단일 쓰레드 이벤트 루프(event loop) 를 사용함으로써 컨텍스트 스위칭(Context Switching) 에 소요되는 오버헤드를 최소화할 수 있음.
Redis 는 이벤트 기반(event-driven) 아키텍처를 채택하여 네트워크 요청을 효율적으로 처리함. 단일 쓰레드 이벤트 루프는 비동기적으로 여러 클라이언트의 요청을 처리할 수 있으며, 이를 통해 높은 동시성을 구현할 수 있음. 멀티쓰레드 모델에서는 이러한 비동기 처리의 이점을 충분히 활요하기 어려울 수 있음.

Redis 6.0 부터 클라이언트로 부터 전송된 네트워크를 읽는 부분과 전송하는 I/O 부분은 멀티 쓰레드를 지원함. 하지만 실행하는 부분은 싱글 쓰레드로 동작하기 때문에 기존과 같이 Atomic 을 보장함.
Last updated
Was this helpful?