2016-11-02 4 views
0

우리는 기본적으로 우리 플랫폼을위한 Push API를 구축하고 있으며, WebHook 이벤트를 분당 많은 수의 곳에 푸시 할 것으로 예상합니다. 두 개의 동일한 이벤트가 서로 밀리 초 내에 생성 될 수 있으며이를 함께 모으고 싶습니다.Redis Sorted Sets를 대기열로 사용하기

목표 :

  1. 집계 동일한 이벤트 우리가오고 이러한 이벤트의 2 이상이 하나의 작업을 생성 할 수있는 가장.
  2. 작업을 생성하는 클라이언트에서 집계 책임을 제거하십시오.

우리는 어쩌면 16 개의 프로세스 대기열 작업이있는 설치에서 Redis Sorted Sets를 유용하게 사용할 수 있습니까?

나는 다음과 같은 명령을 통해 항목을 점수로 타임 스탬프를 사용하여 그냥 계속 "터지는"에 대해 생각했다 :

MULTI 
ZRANGE queue 0 {demand - 1} 
ZREMRANGEBYRANK queue 0 {demand - 1} 
EXEC 

하지만 성능 비용 또는 기타 고려 사항에 대한 확실하지 않다. 아무도 이것을 권하고 싶습니까? 분류 된 세트가 여기에 의미가있는 것처럼 느껴집니다.

답변

1

귀하의 접근 방식이 합리적입니다.

ZRANGE 및 ZREMRANGEBYSCORE 대한 시간 복잡도는 N의 요소 수를 반환 소트 세트 및 M 원소 개수 인과

O (로그 (N) + M)이다.

이는 이벤트 횟수 및 수행 할 요청에 따라 달라진다는 것을 의미합니다.

Redis는 이론상 매우 훌륭한 성능을 보여 주지만, 유즈 케이스에 맞는지 확인하려면 ZSET의 코드, 구성, 생산과 비슷한 수의 항목으로 자신의 벤치 마크를 만드는 것이 더 좋습니다.