나는 리더 보드로 redis 정렬 된 세트를 사용하고 싶습니다. 사전 식 순서가Redis는 스코어 및 날짜 시간을 타이 브레이커로 정렬하여 정렬합니까?
을 사용 : 그러나
ZREVRANGE 0 x
를 사용하여, 나는 단지 공식 레디 스 문서에서, 인 디폴트 타이 브레이커로, 점수 (소트 세트 스코어 기반 상승의 끝 부분)에서 상단 X를 얻을 수 있습니다 동등한 점수를 가진 요소들.
타이 브레이크는 필요한 점수 입력 날짜 시간입니다.
는submits (in order) redis sorts it as I need
User1 -- Score 50 User1 User1
User3 -- Score 40 User2 User3
User2 -- Score 40 User3 User2
내가 볼 수있는 유일한 해결책은 항목의 마지막 업데이트 날짜 시간을 저장 여전히 상단 X 사용자의 최대 및 최소 점수를 얻을 수 ZREVRANGE key 0 x
을 사용하는 것입니다. 그런 다음 ZREVRANGEBYSCORE key max min
을 수행하십시오. 결과 길이가 x보다 큰 경우 적어도 하나의 동점이 있으므로 두 개의 키를 사용하여 Lua에서 그 작은 목록을 정렬합니다.
이 방법은 매우 느린 것으로 보이며 수십만 명의 사용자가 사용할 수 있어야합니다. 나는 두 개의 호출을 좋아하지 않고 루아 (루디 쪽에서 원자를 유지하기 위해)로 처리하고 정렬 된 세트에 2 개의 키를 사용하거나 다른 타이 브레이커를 구성하는 더 좋은 방법이 있는지 알고 싶습니까?
내 코드는 이미 작성되어 있으므로 데이터베이스 유형을 변경할 수 없습니다. 흥미로운 아이디어가 있다면, 나는 그들이 redis에 대한 전문가가 아니기 때문에, 그들에게 듣고 싶습니다.