2014-09-18 1 views

답변

0

Redis 문서는 이러한 최적화에 대해 설명하지 않습니다.

시간 복잡도 : 다음은 ZRANGEBYSCORE 상태 (강조는 추가)에 대한 링크 페이지 정렬 된 세트에 O (로그 (N) + M) N은 요소 수 인과 및 M 수의 요소가 반환됩니다. M이 상수 인 경우 (예 : 항상 LIMIT의 처음 10 개 요소를 묻는 경우) O (log (N))로 간주 할 수 있습니다.

이 점을 감안할 때 정렬 된 집합에 하나의 요소 만 포함되어 있지 않으면 시간 복잡도가 O (1)가 아닌 것으로 보입니다. 오히려 시간 복잡도는 정렬 된 집합의 요소 수에 따라 달라지며 여전히 O (log (N))가됩니다.

+0

'ZRANGEBYSCORE' 구현의 전체 코드는 [여기] (https://github.com/antirez/redis/blob/209f266cc534471daa03501b2802f08e4fca4fe6/src/t_zset.c#L2202)에서 찾을 수 있습니다. –

2

ZRANGE의 복잡성이 너무 자주 상위 점수를 얻으려는 경우 정렬 된 집합과 독립적으로 최고 점수를 캐시하면 O (1)로 얻을 수 있습니다.

+0

그건 좋은, 간단한 솔루션입니다. –