Redis ソート済みセット(sorted set)
Redis ソート済みセットは集合と同じく string 型要素の集合であり、メンバーの重複は許可されません。
異なる点は、各要素が double 型のスコアに関連付けられていることです。redis はまさにスコアによって集合内のメンバーを小さい順から大きい順にソートします。
ソート済みセットのメンバーは一意ですが、スコア(score)は重複することができます。
集合はハッシュテーブルによって実装されているため、追加、削除、検索の計算量はすべて O(1) です。集合内の最大メンバー数は 232- 1 (4294967295、各集合には40億以上のメンバーを格納できます)。
実例
redis 127.0.0.1:6379> ZADD サンプルkey 1 redis (integer) 1 redis 127.0.0.1:6379> ZADD サンプルkey 2 mongodb (integer) 1 redis 127.0.0.1:6379> ZADD サンプルkey 3 mysql (integer) 1 redis 127.0.0.1:6379> ZADD サンプルkey 3 mysql (integer) 0 redis 127.0.0.1:6379> ZADD サンプルkey 4 mysql (integer) 0 redis 127.0.0.1:6379> ZRANGE サンプルkey 0 10 WITHSCORES 1) "redis" 2) "1" 3) "mongodb" 4) "2" 5) "mysql" 6) "4"
上記の例では、コマンドを使ってZADDredis のソート済みセットに3つの値を追加し、スコアを関連付けました。
Redis ソート済みセットコマンド
以下の表は、redis ソート済みセットの基本コマンドを示しています:
| 番号 | コマンドと説明 |
|---|---|
| 1 | ZADD key score1 member1 [score2 member2] ソート済みセットに1つ以上のメンバーを追加するか、既存メンバーのスコアを更新します。 |
| 2 | ZCARD key ソート済みセットのメンバー数を取得します。 |
| 3 | ZCOUNT key min max ソート済みセット内の指定したスコア区間のメンバー数を計算します。 |
| 4 | ZINCRBY key increment member ソート済みセット内の指定したメンバーのスコアに増分 increment を加算します。 |
| 5 | ZINTERSTORE destination numkeys key [key ...] 指定された1つ以上のソート済みセットの積集合を計算し、結果セットを新しいソート済みセット destination に格納します。 |
| 6 | ZLEXCOUNT key min max ソート済みセット内の指定した辞書区間のメンバー数を計算します。 |
| 7 | ZRANGE key start stop [WITHSCORES] インデックス区間によってソート済みセットの指定区間内のメンバーを返します。 |
| 8 | ZRANGEBYLEX key min max [LIMIT offset count] 辞書区間によってソート済みセットのメンバーを返します。 |
| 9 | ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] スコアによってソート済みセットの指定区間内のメンバーを返します。 |
| 10 | ZRANK key member ソート済みセット内の指定したメンバーのインデックスを返します。 |
| 11 | ZREM key member [member ...] ソート済みセットから1つ以上のメンバーを削除します。 |
| 12 | ZREMRANGEBYLEX key min max ソート済みセット内の指定した辞書区間のすべてのメンバーを削除します。 |
| 13 | ZREMRANGEBYRANK key start stop ソート済みセット内の指定したランキング区間のすべてのメンバーを削除します。 |
| 14 | ZREMRANGEBYSCORE key min max ソート済みセット内の指定したスコア区間のすべてのメンバーを削除します。 |
| 15 | ZREVRANGE key start stop [WITHSCORES] ソート済みセット内の指定区間のメンバーをインデックスで返します。スコアは高いものから低いものの順です。 |
| 16 | ZREVRANGEBYSCORE key max min [WITHSCORES] ソート済みセット内の指定したスコア区間のメンバーを返します。スコアは高いものから低いものの順にソートされます。 |
| 17 | ZREVRANK key member ソート済みセット内の指定したメンバーのランキングを返します。ソート済みセットのメンバーはスコア値の降順(大きいものから小さいもの)でソートされます。 |
| 18 | ZSCORE key member ソート済みセット内のメンバーのスコア値を返します。 |
| 19 | ZUNIONSTORE destination numkeys key [key ...] 指定された1つ以上のソート済みセットの和集合を計算し、新しい key に格納します。 |
| 20 | ZSCAN key cursor [MATCH pattern] [COUNT count] ソート済みセット内の要素(要素メンバーと要素スコアを含む)を反復処理します。 |