왜 높은 동시성을 지원할 수있는 단일 스레드 레디 스

memcached를하고 차이점은 무엇입니까 레디 스? 무엇 스레딩 모델을 레디 스? 왜 높은 동시성을 지원할 수있는 단일 스레드 레디 스?

 

이것은 당신이 모르는 경우, 레디 스가 밖으로 때, 재생 것을, 기본 내부 원리와 특성을 레디 스 실제로 단일 스레드 레디 스 작업 모델 레디 스, 지금은 근본적인 문제를 질문 할 수있는 시간이다 이 문제는 아무것도 몰라하지 않을까요?

면접관이 당신에게 memcached를하고 레디 스하지만, 주요 인터넷 기업의 초기 일반적으로 최근 몇 년 동안, 캐싱 방식을 사용 memcached를 사이의 차이를 물어,하지만 지금은 기본적으로 작은 회사와 memcached를, 레디 스있는 것 또한 가능하다.

 

memcached를하고 차이가 무엇 레디 스?

지원 복잡한 데이터 구조를 레디 스

레디 스위한 memcached를 비교하면 풍부한 데이터 조작을 지원할 수 이상의 데이터 구조를 갖는다. 캐시가 더 복잡한 구조와 운영을 지원할 수있는 경우, 레디 스 좋은 선택이 될 것입니다.

클러스터 모드에 대한 네이티브 지원을 레디 스

redis3.x에서 버전은 지원 클러스터 모드로 할 수 있지만 네이티브 memcached를 클러스터 모델은 클러스터가 조각 조각 달성하기 위해 쓰기 데이터를 클라이언트에 의존하지 않습니다.

실적 비교

인해 고성능 memcached를 레디 스 만 레디 스 작은 데이터 기억보다 코어의 각각의 평균을, 다핵 단핵 및 memcached를 사용할 수있다. 100K 상기 데이터 레디 스 memcached를보다 성능이 다소 덜하지만 최근 레디 스 최적화 저장 대용량 데이터 성능, 이에 비해 memcached를, 또는.

스레딩 모델 레디 스

이 레디 스 단일 스레드 모델이라고 있도록 내부 파일 이벤트 핸들러 파일 이벤트 핸들러를 레디 스, 이벤트 핸들러 파일은 단일 스레드입니다. 이 소켓의 이벤트에 따른 처리를위한 이벤트 핸들러를 선택하는 멀티플렉서 IO기구 동시에 청취 소켓의 복수를 사용한다.

이벤트 핸들러 파일 구조는 네 부분으로 포함되어 있습니다 :

  • 여러 소켓
  • IO 다중화 프로그램
  • 파일 이벤트 디스패처
  • 이벤트 핸들러 (접속 확인 프로세서 명령 프로세서 요청 응답 명령 프로세서)

소켓의 복수의 상이한 동시 작업이 각각 다른 이벤트 파일에 대응하지만, 프로그램이 큐에 큐잉 생성 될 소켓, 소켓 이벤트 다중화 IO 복수를 모니터링 할 수 있고, 각각의 이벤트 발송자 큐에서 이벤트 처리를위한 이벤트 처리부에 대응하는 이벤트를 제거한다.

레디 스 클라이언트와 통신 프로세스의 모습 (안 명확한 그림 경우, 새 탭에서 사진을 열고 마우스 오른쪽 단추로 클릭하십시오) :

 

레디 스 socket01 서버 소켓 연결에 대한 클라이언트 요청이 설정되면, 서버 소켓 AE_READABLE 이벤트를 생성합니다 이번에는 IO는 이벤트 큐에 눌러 서버 소켓에 의해 생성 된 이벤트 수신을 다중화. 접속 응답 프로세서, 대기열에서 이벤트를 얻기 디스패처 파일 이벤트. 프로세서는 응답 socket01가 클라이언트와 통신 할 수있는 접속하고, 요청 명령 프로세서와 연관된 AE_READABLE socket01 이벤트를 생성한다.

클라이언트가 SET 키를 값에 요청을 전송한다고 가정하면,이어서, IO 프로그램 프레스 이벤트 큐 다중화 이벤트 발생 socket01의 AE_READABLE를 레디 스은 이후 이벤트 큐에서 이번에 취득한 이벤트 디스패처 이벤트 발송자 프로세서 이벤트 명령 요청을 처리 할 수 ​​있도록 전방 socket01 AE_READABLE 이벤트, 명령 요청 프로세서와 관련있다. 명령 프로세서는 요청 값을 읽고 전체 키는 키 값을 자신의 메모리에 설치되어 socket01. 작업이 완료되면, 그것은 명령 응답 프로세서와 관련된 AE_WRITABLE 이벤트 socket01 것입니다.

이 때 클라이언트가 반환 된 결과를 수신 할 준비가되어 있다면, 또한 대기열에 눌러 진 AE_WRITABLE 이벤트를 생성합니다 socket01에서 레디 스, 이벤트 디스패처이 socket01를 입력 명령 프로세서에 의해 회신 관련 명령 프로세서 응답을 찾을 수 확인과 같은 연산 중 하나 개의 결과, 명령 응답 처리부 AE_WRITABLE socket01 이벤트와 연관된 리프팅 후.

이것은 하나 개의 통신을 완료합니다.

이유는 단일 스레드 모델 수를 효율적으로 너무 높은 레디 스?

  • 순수 메모리 동작
  • 코어는 비 - 블로킹 IO 다중화 메커니즘에 기초
  • 대신에, 멀티 스레드 피에게 자주 문맥 전환 문제를 단일 스레드
게시 된 370 개 원래 기사 · 원 찬양 599 · 조회수 2,180,000 +

추천

출처blog.csdn.net/wzy0623/article/details/103999017