Redis SRANDMEMBERコマンド徹底解説 – セットからランダムな要素を取得する方法
このチュートリアルでは、キーに保存されたセット(Set)型の値から、1つまたは複数のランダムな要素を取得する方法を解説します。これには redis-cli の SRANDMEMBER コマンドを使用します。
SRANDMEMBERコマンドの構文
redis host:post> SRANDMEMBER <key name> [count]
keyname には対象となるセットが格納されたキー名を指定し、count は任意の引数です。count を指定するかどうかで、返される結果の形式が変わります。
戻り値
- キーが存在し、count引数が指定されていない場合:文字列値(string) - キーが存在せず、count引数が指定されていない場合:nil - キーが存在し、count引数が指定されている場合:配列値(array) - キーが存在せず、count引数が指定されている場合:空の配列 - キーの値がセット型でない場合:エラー
count引数による動作の違い
SRANDMEMBERコマンドをキー名のみで呼び出した場合、セットからランダムな要素が1つだけ返されます。一方、キー名とcount引数の両方を指定して呼び出した場合は、countの値に応じて以下の3通りの結果が返されます。
- count > 0 かつ count ≦ セットのサイズの場合:セットから重複しない(distinctな)要素をcount個含む配列が返されます。
- count > 0 かつ count > セットのサイズの場合:セット内のすべての要素を含む配列が返されます。
- count < 0 の場合:絶対値分の個数の要素を含む配列が返されます。この場合、配列には重複した要素が含まれることがあります。
実行例

実際にredis-cliでSRANDMEMBERコマンドを実行すると、上記のようにcount引数の有無や値によって、返される結果がどのように変化するかを確認できます。
参考資料
- SRANDMEMBERコマンド公式ドキュメント(Redis公式サイト)
以上が、Redisデータストア内のセット型の値から1つまたは複数のランダムな要素を取得する方法でした。この記事が役に立ったと思われた方は、ぜひコメント欄でご意見をお聞かせください。また、他の方にもシェアしていただければ幸いです。
-
Redis ZREVRANGEBYSCOREコマンド徹底解説!スコア範囲を指定してソート済みセットの要素を降順で取得する方法
このチュートリアルでは、RedisのZREVRANGEBYSCOREコマンドを使用して、指定したスコア範囲内に含まれるソート済みセット(Sorted Set)の全要素を、スコアの降順で取得する方法を詳しく解説します。 ZREVRANGEBYSCOREコマンドとは ZREVRANGEBYSCOREコマンドは、引数として渡されたmax(最大値)以下かつmin(最小値)以上のスコアを持つ、ソート済みセット内のすべての要素を返します。要素はスコアの降順で返され、同一のスコアを持つ要素同士は辞書順の逆順(降順)で並べられます。 デフォルトではmaxとminは閉区間(境界値を含む)として扱われますが、値の
-
Redis ZRANGEBYSCOREコマンドの使い方 – スコア範囲を指定してソート済みセットの要素を昇順に取得する方法
このチュートリアルでは、RedisのZRANGEBYSCOREコマンドを使用して、指定したスコア範囲内にあるソート済みセット(sorted set)のすべての要素を、スコアの昇順で取得する方法について解説します。 ZRANGEBYSCOREコマンドとは ZRANGEBYSCOREコマンドは、引数として渡されたmin(最小値)以上かつmax(最大値)以下のスコアを持つ、ソート済みセット内のすべての要素を返します。返される要素はスコアの昇順に並べられ、同じスコアを持つ要素同士は辞書順(レキシコグラフィカル順)で昇順に配置されます。 デフォルトではminとmaxは閉区間(境界値を含む)として扱われま