서론

Redis는 경쟁 상태를 방지하기 위해서 싱글 스레드로 동작한다.

경쟁 상태

Untitled

이런식으로 1000이었던 count를 5개의 스레드에서 1000씩 더하면 결과값 6000을 예상할 것이다.

하지만 원하지 않은 결과값이 나올 수 있다. 왜냐하면 스레드1이 1000에다가 1을 더하던 중에

스레드2도 1000에다가 1을 더하게 되면 정상적으로 count 변수의 값이 올라가지 않을 것이다.

위 같은 경우를 방지하기 위해서 싱글 스레드로 동작한다.

이벤트 루프 이용

Redis는 **Event Loop를 이용하여 요청을 수행**한다.

실제 명령에 대한 작업은 커널 I/O 레벨에서 다중화를 통해 처리하여 동시성을 보장한다.

**유저 레벨에서는 싱글스레드로 동작**하지만 커널 I/O 레벨에서는 스레드풀을 이용


싱글 스레드의 장점