복붙노트

[REDIS] 왜 레디 스에 대한 비동기 클라이언트를 사용하는 의미가 무엇입니까?

REDIS

왜 레디 스에 대한 비동기 클라이언트를 사용하는 의미가 무엇입니까?

레디 스 클라이언트 목록이 페이지에서는, 나는 8 비동기 라이브러리를 세었다. 나의 이해는, 그렇지 않으면 당신은뿐만 아니라 동기 갈 수도, Node.js를 같은처럼 그 프레임 워크 또는 비동기 콜백 함수가 I / O를 위해 서로 싸우고되지 않은 경우에만 의미가 토네이도.

그러나 레디 스 단일 스레드입니다. 실제로 I / O를 위해 싸우고있다 그래서. 레디 스의 단일 스레드 본질은 모두에게 비동기 콜백의 잠재적 인 이익을 취소하지 않습니다? 왜 레디 스 비동기 클라이언트를 사용하는 의미가 무엇입니까?

해결법

  1. ==============================

    1.레디 스의 단일 스레드 본질은 비동기 클라이언트의 잠재적 인 이익에 대한 무관하다. 독특한 이벤트 루프에도 불구하고, 레디 스 동시에 클라이언트 연결의 좋은 번호를 관리 할 수 ​​있습니다. 나는 하나의 레디 스 인스턴스에서 30000 개 연결을 최대로 벤치 마크를 보았다.

    레디 스의 단일 스레드 본질은 비동기 클라이언트의 잠재적 인 이익에 대한 무관하다. 독특한 이벤트 루프에도 불구하고, 레디 스 동시에 클라이언트 연결의 좋은 번호를 관리 할 수 ​​있습니다. 나는 하나의 레디 스 인스턴스에서 30000 개 연결을 최대로 벤치 마크를 보았다.

    그냥 고려한다는 점에서 메모리 키 / 레디 스 또는 memcached를, 성능 및 대기 시간 등의 값을 저장하지 않고 서버 측 CPU 소비보다 네트워크 왕복에 의해 지배와. 부여 네트워크 링크가 포화 될 때 네트워크의 지연 시간을 증가 왕복하지만, 네트워크가 포화 상태에서 멀리 때 무시해 것은 아니다. 예를 들어, 매우 가볍게로드 1 개 기가비트 이더넷 네트워크에서, 우리 (200)에 RTT 대기 시간 가까이 볼 드문 일이 아니다.

    결과가 네트워크 링크가 가까운 포화 상태에있는 경우를 제외하고, 클라이언트 연결 (또는 비동기 콜백 함수는) 거의 I / O를 위해 서로 경쟁하지 않습니다. 소켓은 네트워크에 대한 읽기 및 쓰기 작업의 비용을 상환 버퍼로 연결됩니다. 대부분의 시간, 대기 상태는 I / O 경쟁으로 인해 아니지만, 네트워크의 지연 시간에.

    네트워크 대기 시간의 영향을 줄일 수있는 여러 가지 방법이 있습니다 :

    이 솔루션은 모든 레디 스 에코 시스템에 의해 지원되며, 성능을 극대화하기 위해 결합 될 수있다. 비동기 클라이언트는 일반적으로 조합의이 종류를 할 수 있습니다. 비동기 클라이언트의 사용 사례는 무엇입니까? 다음은 몇 가지 예입니다 :

    이벤트 루프, 비동기 라이브러리, 및 / 또는 메커니즘 코 루틴과 같은이 밖으로 효율적인 NoSQL에 엔진의 대부분의 모퉁이 돌 중 하나입니다.

  2. from https://stackoverflow.com/questions/27342508/why-does-it-make-sense-to-use-asynchronous-clients-for-redis by cc-by-sa and MIT license