복붙노트

[REDIS] 당신은 어떻게 토네이도에서 제대로 * 쿼리 레디 스를 *합니까?

REDIS

당신은 어떻게 토네이도에서 제대로 * 쿼리 레디 스를 *합니까?

나는 레디 스 쿼리의 권장 방법 (또는 그 문제에 대한 모든 DB)가 토네이도에서 무엇인지 궁금합니다.

나는 https://gist.github.com/357306 같은 몇 가지 예를 본 적이 있지만 그들은 모두 레디 스에 차단 호출을 사용하는 것으로 나타납니다.

나의 이해가 중단 토네이도 연삭 피할 수 있다는 것입니다, 나는 트위스트을 위해 개발 된 것과 같은 DB 라이브러리를 비 블로킹 사용해야합니다.

내가 잘못? 어떻게 이런 일이 수행하도록되어?

해결법

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

    1.그것은 펍 / 하위 채널에 BLPOP 같은 명령을 차단 또는 청취에 올 때 당신은 토네이도 레디 스 같은 비동기 클라이언트가 필요합니다. 당신은 토네이도 - 레디 스 클라이언트가 단순한 공개 채팅 응용 프로그램을 개발할하기 위해 사용될 수있다 방법을 보려면이 데모와 함께 시작할 수 있습니다.

    그것은 펍 / 하위 채널에 BLPOP 같은 명령을 차단 또는 청취에 올 때 당신은 토네이도 레디 스 같은 비동기 클라이언트가 필요합니다. 당신은 토네이도 - 레디 스 클라이언트가 단순한 공개 채팅 응용 프로그램을 개발할하기 위해 사용될 수있다 방법을 보려면이 데모와 함께 시작할 수 있습니다.

    하지만 다른 대부분의 경우에 hiredis와 함께 동기 레디 스-평 클라이언트를 사용하는 것이 좋습니다 것입니다.

    비동기 클라이언트의 주요 장점은 레디 스 서버 응답을 기다리는 동안 서버가 들어오는 요청을 처리 할 수 ​​있다는 것입니다. 그러나, 레디 스 서버는 너무 빨리 대부분의 경우에 토네이도 응용 프로그램에서 비동기 콜백을 설정하는 오버 헤드가 다음 레디 스 서버 응답을 기다리는에 소요되는 시간을 처리 요청의 총 시간을 더 추가하는 것입니다.

    당신이 동시에 레디 스 서버에 여러 요청을 보내려고 비동기 클라이언트를 수 사용하지만, 레디 스 서버가 있습니다 단일 스레드 하나 (단지 토네이도 서버 등)는 이러한 요청에 응답 할 수 있도록 하나씩 및 당신은 거의 아무것도 얻을 수 없을 것입니다. 그리고, 사실, 당신은 긴 MGET / MSET 같은 파이프 라인 및 명령이 있기 때문에 같은 레디 스 서버에 동시에 여러 레디 스의 명령을 보낼 필요가 없습니다.

    비동기 클라이언트는 여러 레디 스 서버 인스턴스를 사용하는 몇 가지 장점을 가지고,하지만 난 동기 (레디 스-평) 클라이언트와 twemproxy 같은 프록시 또는이 하나 (후자가 지원하는 파이프 라이닝과 MGET / MSET 명령)을 사용하는 것이 좋습니다.

    또한 나는 토네이도 응용 프로그램에서 레디 스-PY 클라이언트를 사용할 때 연결 풀링을 사용하지 않는 것이 좋습니다. 다만 각 레디 스 데이터베이스에 대한 응용 프로그램 커넥트를 하나의 레디 스 오브젝트의 인스턴스를 만듭니다.

  2. ==============================

    2.나는 "토네이도 IO 루프 내에서 작동 비동기 레디 스 클라이언트"입니다 사용 brukva에게 추천 할 것입니다.

    나는 "토네이도 IO 루프 내에서 작동 비동기 레디 스 클라이언트"입니다 사용 brukva에게 추천 할 것입니다.

  3. ==============================

    3.하나의 옵션은 트위스트에 토네이도의 포트를 사용하고 그와 함께 트위스트 레디 스 API를 사용하는 것입니다. 토네이도 자체는 트위스트을 위해 내장 된 사물의 종류를 모두 다시하기를 원한다면, 당신은 아마 토네이도의 낮은 수준의 iostream API를에서 그들을 만들 수 있지만 (목적 등의 임의의 비동기 작업을 갖고있는 것 같다,하지만하지 않습니다 나는) 그것을 추천하지 않을 것입니다.

    하나의 옵션은 트위스트에 토네이도의 포트를 사용하고 그와 함께 트위스트 레디 스 API를 사용하는 것입니다. 토네이도 자체는 트위스트을 위해 내장 된 사물의 종류를 모두 다시하기를 원한다면, 당신은 아마 토네이도의 낮은 수준의 iostream API를에서 그들을 만들 수 있지만 (목적 등의 임의의 비동기 작업을 갖고있는 것 같다,하지만하지 않습니다 나는) 그것을 추천하지 않을 것입니다.

  4. from https://stackoverflow.com/questions/5953786/how-do-you-properly-query-redis-from-tornado by cc-by-sa and MIT license