Ich habe tatsächlich eine funktionierende Leaderboard App, die Redis verwendet. Sie können es überprüfen here. In meiner App sind die Bestenlisten durch die oberen n
Punkte begrenzt, und auch alte Punkte fallen ab, wenn sie zu alt sind (so kann es Tag, Woche, Monat, Jahr hohe Anzeigetafeln geben).
Wie auch immer, ich denke, was Sie suchen, ist eine Gesamtführung, so niedrige Punktzahlen werden abgeschoben. Im Sinne der Redis Sorted Set Partituren, wenn Sie es so eingerichtet haben, dass Highscore erhalten bleiben sollte (sie sind am unteren Rand) und niedrige Scores sollten (sie sind am oberen Rand), dann würden Sie etwas tun wie:
ZREMRANGBYRANK leaderboard 0 -100
In diesem Beispiel wird davon ausgegangen, dass Sie die letzten 100 Werte beibehalten möchten.
Vielleicht invertieren Sie die Scores, so dass ein "Highscore" von 1000 als -1000 in redis gespeichert wird, also das erste in der sortierten Menge. In diesem Fall wäre es das gleiche wie oben, aber ZREMRANGEBYRANK 100 -1
alle Einzelteile nach dem ersten 100.
-Update löschen verwenden: Realisiert ist es ZREMRANGEBYRANK
so vereinfacht mein Beispiel.
Ihre vorgeschlagene Lösung sollte auch funktionieren. Wenn Sie die Partitur des nth
Element finden möchten, können Sie diese verwenden:
hundredth_entry = ZRANGE leaderboard 100 100
hundredth_score = ZSCORE leaderboard hundredth_entry
ZREMRANGEBYSCORE leaderboard -inf (hundredth_score
Die (
dort der Bereich nicht inklusive zu machen, so etwas weniger als die Hundertstel-Score wird gelöscht, aber nicht den hundertsten Punktzahl selbst.