私は実際にredisを使用して動作するリーダーボードアプリを持っています。あなたはそれを確認することができますhere。私のアプリでは、リーダボードはトップn
のスコアで制限されています。また、古いスコアはあまりにも古くなると落ちます(したがって、日、週、月、年の高得点ボードがあります)。
とにかく、あなたが探しているのは総合的なリーダーボードなので、低い得点が押し出されると思います。レディスソートセットスコアの意味では、高いスコアを残しておくべきである(底にある)ように設定した場合、低いスコアは残すべきです(彼らは一番上にあります):
ZREMRANGBYRANK leaderboard 0 -100
この例では、最後の100点を保持したいと仮定しています。
スコアが逆転している可能性があります。したがって、「最高得点」が1000の場合は、赤で-1000として保存されるため、最初にソートされたセットになります。その場合、上記と同じであることが、最初の100
を更新した後、すべての項目を削除するにはZREMRANGEBYRANK 100 -1
を使用します。ZREMRANGEBYRANK
あり実現ので、私の例を簡略化し。
あなたの提案されたソリューションも同様に機能するはずです。あなたがnth
要素のスコアを見つけたい場合は、この使用することができます。
hundredth_entry = ZRANGE leaderboard 100 100
hundredth_score = ZSCORE leaderboard hundredth_entry
ZREMRANGEBYSCORE leaderboard -inf (hundredth_score
を(
は範囲は包括的なので、百分のスコアが削除されます未満のものではなく、百得点しない作ることがあります自体。