[2.28] Redis

Always·2025년 2월 28일
1

매일메일

목록 보기
51/69

Redis

Redis는 단일 스레드 기반의 이벤트 루프를 통해서 구현되어있다. 이를 통해서 성능 최적화, 복잡성 감소, 데이터 일관성을 유지할 수 있다.

동시성 문제 해결


Redis는 싱글 스레드를 이용하므로 위처럼 멀티 스레드 환경에서 발생하는 Race condition,DeadLock문제들을 해결할 수 있다.
또한 동기화, Lock 메커니즘없이 이런 이런 문제를 해결할 수 있고, 데이터 일관성을 유지할 수 있다.

메모리 기반 DB

Redis db는 메모리 기반 db로써 일반적인 보조기억 장치인 disk에서 동작하는 것과 다르게, 훨씬 빠르게 동작한다.

전체 구조


redis 전체 서버는 위와 같은 구조로 되어있다.
IO이후에 단일 쓰레드 기반 event-loop를 이용하므로, context-switching에서 발생하는 오버헤드를 최소할 수 있다.
만약 이벤트 루프가 없으면, 요청이 전요청이 끝나야 전송되므로, cpu효율성이 떨어진다.
그러나 Redis는 이벤트루프를 이용해서 cpu효율성을 올리므로, 작업들의 대기시간을 줄일 수 있다.

Redis 6.0이상에서는 전송되는 네트워크를 읽는 부분, 전송하는 I/O부분이 멀티스레드로 지원되어있어서, 더욱 빠른 응답을 보장함.
또한 싱글 스레드로 실행하는 부분이 동작 되므로, db의 atomic이 보장됨.

profile
🐶개발 블로그

0개의 댓글