레디 스는 단일 스레드와 고도의 동시성 큰 이유는 왜 빨리 설명

레디 스 높은 동시성과 빠른 이유

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. 단일 스레드 프로세스의 장점

  1. 코드 명확하게, 간단하게 처리 로직
  2. 다양한 문제 때문이 아니라 성능의 소비에 의해 발생 가능한 교착 상태의 잠금 잠금 해제 작업이 존재하지 않는, 잠을 고려하지 마십시오
  3. 인한 CPU의 소비가 없기 다중 프로세스 또는 멀티 스레드 스위칭

2. 단일 스레드 프로세스의 단점

  1. 당신은 멀티 코어 CPU의 성능을 재생할 수 있지만, 완벽에 하나의 레디 스의 여러 인스턴스를 열 수 있습니다;

IO 멀티플렉싱

멀티플렉싱 기술을 사용하여 레디 스 IO 네트워크는 다중 연결, 높은 처리량 시스템을 보장합니다.

다중 - 소켓 연결하는 복수의 다중화를 의미 - 다중 스레드를 의미합니다. 세 가지 주요 멀티플렉싱 기술이 있습니다 선택, 설문 조사, epoll 파일은. epoll에 최신 멀티플렉싱 기술은 현재 최고입니다.

여기서 "다중화"는 다수의 네트워크 연결을 의미한다 "다중화"는 동일한 스레드를 다시 지칭한다. 멀티 채널
I / O의
단일 스레드 연결 요청하는 복수의 처리 효율있게 다중화 기법 (IO 네트워크에 의해 소비되는 시간을 최소화) 및 메모리 동작 내의 레디 스 조작이 매우 빠르고, 메모리의 데이터 (여기서는 없습니다 성능 병목 현상), 높은 처리량으로 만든 위의 두 가지 주요 레디 스.

레디 스 높은 동시성 빠른 요약


1. 레디 스 인 - 메모리 데이터베이스, 일반적으로 간단한 액세스 작업은 스레드가 시간을 많이 차지 순수, 시간이 너무 빨리 읽기 속도, IO에 초점을 보냈다.

2. 스위칭 시간 스레드를 줄이고, 이벤트로 변환, 읽기, 쓰기, 가까운, 데이터베이스를 열 것입니다, 기술자를 폴링 단일 스레드를 사용하여 비 차단 IO, IO 멀티플렉싱을 사용하여 당신에게 IO, 레디 스에게 컨텍스트 스위칭 및 경쟁.

3. 레디 스은 원자 동작의 각각은 또한 컨텍스트 스위칭 및 경쟁 스레드를 줄일 수 있도록 단일 스레드 모델을 사용한다.

4. 또한, 데이터 구조는 또한 레디 스 전체 해시 구조를 이용하여, 많은 도움이 높은 판독 속도와 같은 압축 테이블, 데이터 압축 단기 기억 같이, 저장된 데이터를 최적화 된 특별한 데이터 구조가 있으며, 다시 읽기 속도를 정렬 된 데이터 구조를 사용하여 테이블을 이동.

5. 다른 점은, 비 차단 실행 모드를보다 효율적으로 내부의 레디 스 이벤트 스플리터 자체의 구현은, 처리 능력이 상대적으로 크다.


HTTPS : //juejin.im/post/5cf5ec11f265da1b8e708b7a 재현

추천

출처blog.csdn.net/weixin_33725270/article/details/91454964