철학
메모리에 데이터를 저장하기 때문에 디스크에 비해 빠른 성능 제공
메모리에 데이터를 저장한다는건 IO 바운드 작업이 없기 때문에 빠른 성능이 가능
데이터를 주기적으로 스냅샷을 찍어 디스크에 저장하고 모든 쓰기 작업을 로그에 남겨 데이터 복구 가능 (완전한 영속성을 보장하진 않고 백업 개념)
싱글 쓰레드 선택 이유
멀티 쓰레드에서 발생하는 락 문제 최소화
클러스터링을 통해 여러 인스턴스를 생성하기에 싱글 쓰레드로도 충분한 성능
멀티 쓰레드에서 발생하는 Context Switching이 없음
최적화
싱글 쓰레드이기 때문에 CPU 클럭 수에 따라 좌우됨
빠른이유
memory에서 데이터를 관리하기 때문에 IO 작업이 거의 없음 (100% 없지 않을거 같음)
- 디스크에 쓰려면 하드웨어의 물리적 한계 (데이터가 어디 있는지, 어디에 쓸껀지 기다려야 함)
- 메모리는 random access memory 가능해서 더 빠름
- 네트워크나 디스크에 쓰면 대여폭이 제한될 수 있어
- 디스크에 데이터를 넣을 때 OS 및 파일 시스템에서 여러 단계를 걸쳐야 함
- 어플러케이션 요청
- 파일 시스템 인터페이스 처리. 파일이 어떤 디렉토리에 있는지 검색, 파일 메타 데이터 확인 (크기, 위치, 권한 등)
- OS에서 디스크 입출력 최적화를 위해 페이지 캐시라는 메모리 영역 확인
- 파일시스템이 디스크에 직접 작업을 요청하는 대신 입출력 스케쥴러를 통해 요청
- 디스크 드라이버 처리
- 디스크 하드웨어 작업
- 데이터 반환
key-value data model이라 데이터 구조가 단순하여 빠름
I/O Multiplexing with Non-Blocking I/O and Client Connection Management
- 다수의 socket를 한번에 받을 수 있어. O(1) Time complexity로,
https://medium.com/@aditimishra_541/why-is-redis-so-fast-despite-being-single-threaded-dc06ba33fc75
Why is Redis So Fast Despite Being Single-Threaded?
Redis is a high-performance, in-memory key-value store known for its incredible speed. In fact, a single Redis server can handle up to…
medium.com
https://f-lab.kr/insight/redis-single-thread-philosophy-20241111
레디스의 싱글 스레드 철학과 활용 방법
이 글에서는 레디스의 싱글 스레드 철학과 이를 활용하는 방법에 대해 설명합니다. 레디스의 성능 최적화 방법과 데이터 연속성 보장 방법을 다루며, 레디스의 활용 사례를 통해 인메모리 데이
f-lab.kr
'IT' 카테고리의 다른 글
N개의 탭, 단 하나의 웹소켓: SharedWorker (0) | 2024.12.28 |
---|---|
시니어 사용자가 어려워하는 UX 5가지 (0) | 2024.12.28 |
Server Driven UI (1) | 2024.11.18 |
[firebase > firestore database] 검색 기능 구현하기 (2) | 2024.11.17 |
디자인 시스템의 깨진 약속들 (1) | 2024.11.16 |