Bytebytego 블로그를 읽으면서 최근에 관심이 생긴 Redis에 대해서 글을 찾다가, Redis가 빠른 이유에 대한 글을 읽고 정리하게 되었습니다.
Ram 기반 데이터베이스
- 디스크 대신 메모리에 데이터 저장
- 메모리는 CPU와 직접 연결되어 있기 때문에 CPU에서 빠르게 데이터를 검색 가능
- 높은 읽기/쓰기 처리량과 낮은 latency가 장점
- 데이터 저장시 메모리 크기에 제한된다는 단점
IO 멀티플렉싱 & 단일 스레드
- 비동기 IO를 사용하여 여러 클라이언트 요청을 동시에 처리가능
- 높은 처리량을 유지
- 단일 스레드인 레디스는 멀티 스레드를 사용하는 데이터베이스의 컨텍스트 전환 비용이 들지 않음
- 멀티 스레드는 스레드 간의 컨텍스트 전환 비용 발생 & 락을 사용하고 동기화를 위한 메커니즘으로 인해 처리량이 떨어질 수 있음
네이티브 데이터 구조
- 단순한 데이터 구조
- 문자열, 리스트, 해시, 집합, 정렬된 집합 등 다양한 네이티브 데이터 구조 지원
- 위 데이터 구조는 가볍고 간단해서 레디스 메모리 사용량 최소화하면서 빠른 데이터 처리 보장
- 내부적으로 적절히 최적화된 데이터 구조를 통해 매우 빠른 데이터 저장 및 검색 제공
참고
https://blog.bytebytego.com/p/why-is-redis-so-fast?utm_source=publication-search
'자잘한 cs' 카테고리의 다른 글
JPA의 N+1 문제에 대해서 설명해주세요. (0) | 2024.11.22 |
---|---|
엔티티 매니저에 대해 설명해주세요. (0) | 2024.11.20 |
JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에서 사용해야 할까요? (0) | 2024.11.18 |
프록시 패턴이란? (0) | 2024.05.22 |
reverse proxy란? (0) | 2024.05.10 |