파이문

[Redis] 레디스는 싱글 쓰레드인데 어떻게 동시에 접근하지? 본문

TIL

[Redis] 레디스는 싱글 쓰레드인데 어떻게 동시에 접근하지?

민Z 2020. 10. 27. 18:30
728x90

왜 레디스는 싱글쓰레드로 되어 있을까?

  1. 프로그래밍이 쉽다.
  2. 동시성에서 도움이 된다. (동시성과 병렬성은 다르다!)
  3. CPU 가 보틀넥이 아니다.
  4. 비용이 효율적이다.

레디스가 싱글 쓰레드인데 어떻게 동시에 접근하지?

우선 동시성에 의미를 다시 생각해봐야 한다.


서버에서 동시성과 병렬성은 다른 컨셉을 갖고 있다.

 

서버에서 동시성 I/O 를 지원한다는 의미는 하나의 계산 단위만을 가진 클라이언트가 여러 흐름을 실행함으로써, 서버가 여러개의 클라이언트에 서비스를 제공할 수 있다는 의미이다.


병렬은 서버가 여러가지 일을 동시에 할 수 있다는 것이다.

 

예를 들면 바텐더 여러 고객들을 보고 하나의 음료만 만든다는 것은 동시성은 갖고 있지만 병렬성은 없다는 것이다.

 

참고

- stackoverflow.com/questions/45364256/why-redis-is-single-threadedevent-driven

- stackoverflow.com/questions/10489298/redis-is-single-threaded-then-how-does-it-do-concurrent-i-o

Comments