레디 스 높은 동시성과 빠른 이유
1.redis 메모리 기반으로, 매우 빠른 읽기 및 메모리의 쓰기 속도;
2.redis 전환 시간 스레드 콘텍스트를 많이 제거 단일 스레드이고;
멀티플렉싱 기술을 사용하여 3.redis, 당신은 동시 연결을 처리 할 수 있습니다. 내부는 epoll에 + 자신의 구현을위한 간단한 이벤트 프레임 워크를 사용, IO이는 epoll을 사용 비는 차단 얻을 수 있습니다. 읽기, 쓰기, 가까운, 연결에서의 epoll 이벤트로 변환 한 다음 epoll에 다중화 특성을 사용하고 IO에 약간의 시간을 낭비하지 않습니다.
우리는 빠른 코어 설계에 대한 다음과 같은 단일 스레드 설계 및 IO 멀티플렉싱 이유에 초점을 맞 춥니 다.
왜 레디 스 단일 스레드입니다
1. 공식적인 답변
레디 스 메모리 조작은 병목 현상, CPU 레디 스 아니라, 대부분 레디 스 병목 시스템 메모리 크기 또는 대역폭을 기반으로하기 때문에. 쉽게 구현할 단일 스레드, 그리고 CPU가 병목이되지 않기 때문에, 단일 스레드 프로그램을 채택하는 논리적이다.
2. 성과 지표
공식 웹 사이트 레디 스 성능은 쉽게 일반 노트북을 가지고 초당 요청 수십만을 처리합니다.
3. 자세한 이유
1) 다양한 성능 오버 헤드를 잠글 필요가 없습니다
레디 스 데이터 구조는 완전히 간단한 키 - 값,이 목록, 해시 및 이후 긴 목록의 요소를 추가하는 등 매우 세밀한 작업을 겪을 가능성이 다른 복잡한 구조, 해시를 추가하지 않은 또는 삭제
객체입니다. 이러한 작업은 매우 증가된다 동기화 오버 헤드를 초래 잠금 많이 추가 할 필요가있다.
즉, 단일 스레드 경우에, 우리는 발생 및 성능 오버 헤드가 발생할 수 있습니다 때문이 아니라 교착 상태, 존재하지 않는 잠금 해제 조작을 잠금, 다양한 문제 잠금 고려해야 할 필요가 없습니다.
2) 단일 스레드 멀티 프로세스 클러스터 방식
코어 당 단일 스레드 전원 실제로 매우 강력하고 매우 높은 효율, 멀티 스레드 특성은 단일 스레드 캡보다 높은 성능을 가질 수 있지만, 오늘날의 컴퓨팅 환경에서, 단 한 번의 멀티 스레드 캡은 종종 충족시킬 수 없다 필요, 멀티 스레드 기술은 아직 얻을 수없는 것입니다있는 다중 서버 클러스터 프로그램의 추가 탐사의 필요성.
그래서 단일 스레드, 다중 프로세스 클러스터는 세련된 해결책이 될 것입니다.
3) CPU 소비
단일 스레드 불필요한 콘텍스트 스위치 및 경쟁 상태를 피하기 위해, 아무 다중 프로세스 없거나 멀티 스레드 스위칭 리드 CPU가 소비된다.
CPU가 병목 레디 스되고, 또는 다른 서버 CUP 핵 유휴 수 있도록 원하지 않는 경우에는 어떻게해야합니까?
그것은 몇 레디 스 과정보다 더 고려 될 수있다, 레디 스에 키 - 값 데이터베이스입니다, 사이 제약, 데이터를 관계형 데이터베이스가되지 않습니다. 한 클라이언트로 구별되는 키하는 레디 스이를 처리합니다.
레디 스의 장점과 단일 스레드의 단점
1. 단일 스레드 프로세스의 장점
- 코드 명확하게, 간단하게 처리 로직
- 다양한 문제 때문이 아니라 성능의 소비에 의해 발생 가능한 교착 상태의 잠금 잠금 해제 작업이 존재하지 않는, 잠을 고려하지 마십시오
- 인한 CPU의 소비가 없기 다중 프로세스 또는 멀티 스레드 스위칭
2. 단일 스레드 프로세스의 단점
- 당신은 멀티 코어 CPU의 성능을 재생할 수 있지만, 완벽에 하나의 레디 스의 여러 인스턴스를 열 수 있습니다;
IO 멀티플렉싱
멀티플렉싱 기술을 사용하여 레디 스 IO 네트워크는 다중 연결, 높은 처리량 시스템을 보장합니다.
다중 - 소켓 연결하는 복수의 다중화를 의미 - 다중 스레드를 의미합니다. 세 가지 주요 멀티플렉싱 기술이 있습니다 선택, 설문 조사, epoll 파일은. epoll에 최신 멀티플렉싱 기술은 현재 최고입니다.
여기서 "다중화"는 다수의 네트워크 연결을 의미한다 "다중화"는 동일한 스레드를 다시 지칭한다. 멀티 채널
I / O의
단일 스레드 연결 요청하는 복수의 처리 효율있게 다중화 기법 (IO 네트워크에 의해 소비되는 시간을 최소화) 및 메모리 동작 내의 레디 스 조작이 매우 빠르고, 메모리의 데이터 (여기서는 없습니다 성능 병목 현상), 높은 처리량으로 만든 위의 두 가지 주요 레디 스.
레디 스 높은 동시성 빠른 요약
1. 레디 스 인 - 메모리 데이터베이스, 일반적으로 간단한 액세스 작업은 스레드가 시간을 많이 차지 순수, 시간이 너무 빨리 읽기 속도, IO에 초점을 보냈다.
2. 스위칭 시간 스레드를 줄이고, 이벤트로 변환, 읽기, 쓰기, 가까운, 데이터베이스를 열 것입니다, 기술자를 폴링 단일 스레드를 사용하여 비 차단 IO, IO 멀티플렉싱을 사용하여 당신에게 IO, 레디 스에게 컨텍스트 스위칭 및 경쟁.
3. 레디 스은 원자 동작의 각각은 또한 컨텍스트 스위칭 및 경쟁 스레드를 줄일 수 있도록 단일 스레드 모델을 사용한다.
4. 또한, 데이터 구조는 또한 레디 스 전체 해시 구조를 이용하여, 많은 도움이 높은 판독 속도와 같은 압축 테이블, 데이터 압축 단기 기억 같이, 저장된 데이터를 최적화 된 특별한 데이터 구조가 있으며, 다시 읽기 속도를 정렬 된 데이터 구조를 사용하여 테이블을 이동.
5. 다른 점은, 비 차단 실행 모드를보다 효율적으로 내부의 레디 스 이벤트 스플리터 자체의 구현은, 처리 능력이 상대적으로 크다.
HTTPS : //juejin.im/post/5cf5ec11f265da1b8e708b7a 재현