Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

【Redis入門】ZRANK・ZREVRANKコマンドでソートセットの要素のランクを取得する方法

このチュートリアルでは、Redisデータストアに格納されたソートセット(Sorted Set)の値から、特定の要素のランク(順位)を取得する方法を、ZRANKコマンドとZREVRANKコマンドを使って解説します。

ZRANKコマンドとは

ZRANKコマンドは、指定したキーに格納されているソートセットの中から、対象メンバーのランクを返すコマンドです。ソートセット内の要素はスコアの昇順で並んでおり、スコアが同じ要素同士は辞書順(レキシコグラフィカル順)の昇順で比較されます。

ランクはゼロベースである点に注意してください。つまり、最もスコアが低いメンバーのランクは「0」となります。

  • 要素がソートセット内に存在しない場合、またはキー自体が存在しない場合 → 「nil」が返される
  • キーは存在するが、格納されている値がソートセット型ではない場合 → エラーが返される

構文

redis host:post> ZRANK <keyname> <element>

出力

- (integer) ソートセット内における該当要素のランク
- (nil) 要素が存在しない場合、またはキーが存在しない場合
- Error キーは存在するが、値がソートセット型ではない場合

実行例

【Redis入門】ZRANK・ZREVRANKコマンドでソートセットの要素のランクを取得する方法

ZREVRANKコマンドとは

ZREVRANKコマンドも、指定したキーに格納されたソートセット内の要素のランクを返すという点ではZRANKと同じですが、スコアの降順で並び替えた場合の順位を返します。スコアが同じ要素同士は、辞書順の降順で比較されます。

この場合もランクはゼロベースであり、最もスコアが高いメンバーのランクが「0」になります。要素やキーが存在しない場合には「nil」が、値のデータ型が異なる場合にはエラーが返される点もZRANKと共通です。

構文

redis host:post> ZREVRANK <keyname> <element>

出力

- (integer) スコア降順でのソートセット内における該当要素のランク
- (nil) 要素が存在しない場合、またはキーが存在しない場合
- Error キーは存在するが、値がソートセット型ではない場合

実行例

【Redis入門】ZRANK・ZREVRANKコマンドでソートセットの要素のランクを取得する方法

ZRANKとZREVRANKの違いまとめ

コマンド並び順ランク0になる要素
ZRANKスコアの昇順最もスコアが低い要素
ZREVRANKスコアの降順最もスコアが高い要素

なお、ゲームのスコアランキング(リーダーボード)のような用途では、ZADDコマンドでスコアを登録し、ZREVRANKコマンドで「上位何位か」を取得するのが一般的なパターンです。用途に応じて両方のコマンドを使い分けましょう。

参考資料

  1. ZRANKコマンド公式ドキュメント
  2. ZREVRANKコマンド公式ドキュメント

以上が、Redisに格納されたソートセットの要素のランクを取得する方法の解説でした。この記事が役に立ったら、ぜひコメント欄で感想を共有したり、他の方にもシェアしてみてください。

  1. Redis ZREVRANGEBYSCOREコマンド徹底解説!スコア範囲を指定してソート済みセットの要素を降順で取得する方法

    このチュートリアルでは、RedisのZREVRANGEBYSCOREコマンドを使用して、指定したスコア範囲内に含まれるソート済みセット(Sorted Set)の全要素を、スコアの降順で取得する方法を詳しく解説します。 ZREVRANGEBYSCOREコマンドとは ZREVRANGEBYSCOREコマンドは、引数として渡されたmax(最大値)以下かつmin(最小値)以上のスコアを持つ、ソート済みセット内のすべての要素を返します。要素はスコアの降順で返され、同一のスコアを持つ要素同士は辞書順の逆順(降順)で並べられます。 デフォルトではmaxとminは閉区間(境界値を含む)として扱われますが、値の

  2. Redis ZRANGEBYSCOREコマンドの使い方 – スコア範囲を指定してソート済みセットの要素を昇順に取得する方法

    このチュートリアルでは、RedisのZRANGEBYSCOREコマンドを使用して、指定したスコア範囲内にあるソート済みセット(sorted set)のすべての要素を、スコアの昇順で取得する方法について解説します。 ZRANGEBYSCOREコマンドとは ZRANGEBYSCOREコマンドは、引数として渡されたmin(最小値)以上かつmax(最大値)以下のスコアを持つ、ソート済みセット内のすべての要素を返します。返される要素はスコアの昇順に並べられ、同じスコアを持つ要素同士は辞書順(レキシコグラフィカル順)で昇順に配置されます。 デフォルトではminとmaxは閉区間(境界値を含む)として扱われま