>  기사  >  데이터 베이스  >  Redis가 단일 스레드를 사용하는 이유는 무엇입니까? 왜 그렇게 빠른가요?

Redis가 단일 스레드를 사용하는 이유는 무엇입니까? 왜 그렇게 빠른가요?

青灯夜游
青灯夜游앞으로
2021-11-01 10:08:022140검색

redis의 단일 스레딩이란 무엇입니까? Redis가 단일 스레드를 사용하는 이유는 무엇입니까? 단일 스레드 Redis가 왜 그렇게 빠른가요? 다음 기사는 당신에게 분석을 제공할 것이며 그것이 당신에게 도움이 되기를 바랍니다!

Redis가 단일 스레드를 사용하는 이유는 무엇입니까? 왜 그렇게 빠른가요?

1. 기본 개념

  • 단일 스레드 Redis란 무엇입니까(핵심 기능은 모든 기능이 아닌 단일 스레드에 있음)

    • Redis의 네트워크 IO 및 키-값 쌍 읽기 및 쓰기는 하나의 스레드로 완성(redis의 핵심 서비스)

    • Redis의 다른 기능은 추가 스레드로 완성

      • Persistence
      • 비동기 삭제
      • 클러스터 데이터 동기화

[관련 권장사항: Redis 동영상 튜토리얼

2. Redis가 단일 스레드를 사용하는 이유

  • 멀티 스레딩의 오버헤드

    • 멀티 스레딩을 사용하면 (요청당) 시스템 처리량을 늘리고 시스템 확장성을 높일 수 있습니다

    • Unlimited 스레드 수를 늘리면 처리량이 감소합니다

      • 공유 데이터 구조와 같은 공유 리소스는 동시에 여러 스레드에서 액세스됩니다.
      • 스레드 안전성을 보장하기 위해 성능 희생이 발생합니다
      • 대략- 세분화된 잠금은 모든 직렬 및 시스템 처리량 속도로 이어집니다. 스레드가 증가함에 따라 증가합니다.
  • 따라서 동시 리소스 관리를 절약하기 위해 Redis는 단일 스레드를 사용하여 모든 작업이 직렬화되도록 합니다.

Redis가 단일 스레드를 사용하는 이유는 무엇입니까? 왜 그렇게 빠른가요?

Redis가 단일 스레드를 사용하는 이유는 무엇입니까? 왜 그렇게 빠른가요?

3. 단일 스레드 Redis 빠른 이유

  • Redis의 대부분의 작업은 메모리 + 효율적인 데이터 구조에 있습니다.
  • redis는 다중화 메커니즘을 채택하여 많은 수의 클라이언트 요청을 처리합니다. 높은 처리량을 달성하기 위한 네트워크

4.socket

  • 소켓 통신 프로세스(네트워크 IO 처리 + 키-값 쌍 읽기 및 쓰기 + 네트워크 IO 처리)

    • SimpleKV Get 요청을 처리하기 위해
    • 클라이언트 요청(바인딩/수신)
    • 및 클라이언트(코드)를 모니터링해야 합니다. 연결 설정(수락)
    • 소켓에서 요청 읽기(recv)
    • 클라이언트가 보낸 요청 구문 분석(구문 분석)
    • 요청 유형에 따라 키 값 데이터 읽기(get)
    • 마지막으로 결과를 클라이언트에 반환합니다. 즉, 데이터를 소켓에 다시 쓰기(send)
  • 잠재적 차단 지점

    • accept()가 연결 설정에 실패하면 항상 차단

    • recv() 클라이언트에서 데이터를 읽을 때 항상 차단됩니다

Redis가 단일 스레드를 사용하는 이유는 무엇입니까? 왜 그렇게 빠른가요?

  • 소켓의 비차단 모드
  • 는 다음을 보장합니다. Redis 스레드는 기본 IO 모델처럼 차단 지점에서 기다리지 않으며 Redis가 실제 도착하는 연결 요청을 처리할 수 없게 만들지도 않습니다. 또는 데이터
  • Linux의 IO 다중화 메커니즘

Redis가 단일 스레드를 사용하는 이유는 무엇입니까? 왜 그렇게 빠른가요?

5. 멀티플렉싱

  • Linux의 IO 멀티플렉싱 메커니즘은 여러 IO 스트림을 처리하는 하나의 스레드를 의미하며 /poll

  • 을 선택하면 단일 스레드에서 여러 소켓과 연결된 소켓이 동시에 모니터링됩니다

  • 특정 구현

    • FD는 다중 소켓입니다

    • Redis는 epoll 메커니즘을 사용하여 커널이 소켓을 수신할 수 있도록 합니다.

    • Redis는 여러 클라이언트에 연결하고 요청을 처리하여 동시성을 향상할 수 있습니다

    • select/epoll 이벤트 기반 콜백 메커니즘을 제공하여 다양한 이벤트에 대한 해당 처리를 호출합니다.

      • 함수는 먼저 요청이 실제로 발생하는지 확인하지 않고 이벤트를 이벤트 큐에 넣어 CPU 리소스 낭비를 방지합니다.
      • 에 따라 응답 작업을 수행합니다. 해당 이벤트

Redis가 단일 스레드를 사용하는 이유는 무엇입니까? 왜 그렇게 빠른가요?

6. 요약

  • redis는 정말 단일 스레드인가요?

    • 네트워크 IO와 데이터 읽기 및 쓰기 작업에 하나의 스레드를 사용합니다.
  • 멀티 스레드 개발에서 동시성 제어 문제를 피하기 위해 단일 스레드를 사용하는 이유

    • .
    • 다중화 IO 모델은 밀접하게 관련되어 있습니다.
  • 단일 스레드가 왜 이렇게 빠른지

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !

위 내용은 Redis가 단일 스레드를 사용하는 이유는 무엇입니까? 왜 그렇게 빠른가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제