Redis는 소켓을 통해 통신합니다. 즉, Redis 서비스는 동시에 여러 클라이언트 연결 요청을 받을 수 있으며 Redis 서비스 자체는 단일 스레드. (추천 학습: iRedis 비디오 튜토리얼 ) 이제 Redis 요청을 시작하는 A, B, C, D 및 E의 5개 클라이언트가 동시에 도착한다고 가정합니다. Redis 서버가 A 요청을 처리하기 시작하면 연결을 설정하는 데 30초, 요청 데이터를 얻는 데 10초, 데이터를 처리하는 데 0.1초, 데이터를 클라이언트로 다시 보내는 데 약 5초가 걸립니다. 총 45초.
즉, 다음 B 요청은 45초를 기다려야 합니다. 여기서 이 5개 요청은 거의 동시에 처리될 수 있으므로 소켓이 여러 요청을 동시에 처리할 수 있으므로 네트워크 연결 단계의 시간 차이는 무시할 수 있습니다. 그러나 두 번째 단계에서는 서버가 아무 것도 하지 않아도 되며 10초 동안 앉아서 기다리는 것은 CPU와 클라이언트 모두 견딜 수 없는 일입니다. 그래서 단일 스레드 효율성은 매우 낮지만 정확하게 이러한 유사한 문제로 인해 Redis 단일 스레드는 본질적으로 이렇게 실행되지 않습니다. 다음으로 Redis의 실제 단일 스레드 작업 모드에 대해 설명합니다.
클라이언트와 서버 간의 연결은 소켓을 통해 설정됩니다. 동시에 여러 연결을 설정할 수 있습니다
Redis는 설정된 연결을 알고 있습니다(왜) 알고 계십니까? 소켓 프로그래밍으로 이동하여 기본이 중요하다는 점을 다시 강조합니다. 그런 다음 Redis는 설정된 연결을 기반으로 어떤 연결이 클라이언트의 요청 데이터를 수신했는지 감지합니다. 참고: 어떤 연결이 설정되었는지 감지하는 것이 아니라 어떤 연결이 요청 데이터를 수신했는지 감지하는 것이며 여기서 감지 작업은 단일 스레드의 시작입니다. 감지되면 데이터 처리 단계가 시작됩니다. 수신된 데이터에 대해 데이터를 반환하고 요청된 데이터를 수신한 다음 네트워크 연결을 계속 검색합니다.
탐지부터 데이터 처리, 데이터 반환까지 전체 프로세스가 단일 스레드라는 점에 유의하세요.
이것은 소위 Redis 단일 스레드여야 합니다.
우리가 추구하는 것은 내부의 복잡성에 신경 쓸 필요가 없고, 과정을 이해하고 원칙을 요구하는 것이지만, 내부 장기를 모두 파헤칠 수는 없습니다.요청 데이터 수락 후 네트워크 연결 감지부터 최종 데이터 반환까지 서버가 걸리는 시간은 5.1초에 불과합니다. 이 시간은 N배로 확대한 후의 데이터입니다. 아마도 이보다 훨씬 짧을 것입니다. N 백만 5.1 한 번.
Redis 시작 튜토리얼
칼럼을 방문하여 알아보세요!위 내용은 Redis 단일 스레드를 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!