본문 바로가기
NoSQL/redis

[Redis 8편] 싱글스레드를 사용하는 Redis 는 왜 빠른가?

by 무대포 개발자 2022. 9. 9.
728x90
반응형

목차는 redis 목차 에 있습니다.

source 는 Github 에 있습니다.

[Redis 8편] 싱글스레드를 사용하는 Redis 는 왜 빠른가?

In memory 데이터베이스

  • redis 는 in memomry 데이터베이스를 사용합니다.
  • 메모리 엑세스는 랜덤 disk I/O 보다 빠릅니다.
  • 코드 측면에서 봐도 in-memory 데이터베이스는 간단한 코드로 데이터에 접근이 가능한 반면 disk 에 접근하기 위해선 여러 코드를 작성해야 합니다

I/O Multiplexing

  • I/O Multiplexing & 싱글 스레드 조합을 사용해 동시 요청에 대해서 성능을 보장할 수 있습니다.
  • 옛날에는 select, poll 다중 IO 처리 방법이 있었습니다.
    • Select 에 대해서 간단히 알아보면 fd_set (파일 디스크립터 set) 을 만들어 fd 에 입력이 들어오면 blocking 이 해제되고 동작을 수행하는 방식입니다. select 의 한게는 fd 최대 개수가 1024 개라는 점과 모든 fd 를 순회해야한다는 점, 커널에게 직접 요청해야하는 점 등이 있습니다.
  • 이런 방식에서 개선된게 linux 의 epoll 방식이고, 커널 레벨의 멀티플렉싱을 지원해줍니다. select 의 단점을 해결하기 위해 나왔으며, 변경대상이 있을 때만 알려줍니다.

Low-level 데이터 구조

  • low-level 의 데이터 구조를 사용하기에 성능에 좋다는데 이건 무슨말인지 이해가 안가서 따로 정리 못했습니다.

Reference

댓글