2016-08-26 6 views
1

응답 시간이 매우 빨라야하는 응용 프로그램을 작성하고 있습니다. 여러 세트의 교차 및 결합이 필요할 수있는 몇 가지 쿼리가 있습니다.

예는 내가 자바 클라이언트와 함께 할 때

이 ((A 조합 B) 교점 C)

그러나, 각 쿼리에 따라서 나의 응답 시간을 증가 1 개 핸드 셰이크를 필요로 할 것이다.Redis 클라이언트의 핸드 셰이크 수를 줄이려면 어떻게해야합니까?

내가 하나의 핸드 셰이크에 그것을 할 수있는 방법이 있다면 궁금 해서요, 루아 스크립트가 좋은 옵션처럼 보이는 하지만 내부적으로 어떻게 작동하는지 모르겠어요

답변

1
  • 레디 스의 루아 스크립트입니다 즉시 모든 것을 차단하는 블로킹 방법.
  • 그래서 너는 에 대한 네트워크 왕복을 피할 수 있습니다.
  • 블록을 사용할 때 항상 을 사용해야하며 모든 공용 영역 및 교차 영역이 프로덕션 환경에서 5 초가 걸리면 실행을 대기중인 다른 명령을 차단합니다. 다른 명령은 실행되지 않을 수 있으며 상황을 악화시킬 수있는 시간 초과 오류가 발생합니다.
  • 이렇게 할 수 있습니다. 부분적인 루아 스크립트 호출은 50 개 요소이므로 (다른 숫자로 시도하여 의 최적 수를 도출합니다).
  • 또한 적합한 경우 2 개만 사용하는 대신 여러 요소의 sunion 및 sinter 사용을 고려하십시오. 즉,

sunion SET1 SET2 SET3 ... 대신

sunionstore 임시 SET1 등등

sunionstore 임시 임시 SET3 및 설정 2.

희망이 도움이됩니다.

3

pipeline을 사용하여 RTT를 줄일 수도 있습니다.

pipeline으로 한 번에 여러 명령을 Redis에 보내고 모든 응답을 읽을 수 있습니다.