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 ソート済みセットの基本コマンドを示しています:

番号コマンドと説明
1ZADD key score1 member1 [score2 member2]
ソート済みセットに1つ以上のメンバーを追加するか、既存メンバーのスコアを更新します。
2ZCARD key
ソート済みセットのメンバー数を取得します。
3ZCOUNT key min max
ソート済みセット内の指定したスコア区間のメンバー数を計算します。
4ZINCRBY key increment member
ソート済みセット内の指定したメンバーのスコアに増分 increment を加算します。
5ZINTERSTORE destination numkeys key [key ...]
指定された1つ以上のソート済みセットの積集合を計算し、結果セットを新しいソート済みセット destination に格納します。
6ZLEXCOUNT key min max
ソート済みセット内の指定した辞書区間のメンバー数を計算します。
7ZRANGE key start stop [WITHSCORES]
インデックス区間によってソート済みセットの指定区間内のメンバーを返します。
8ZRANGEBYLEX key min max [LIMIT offset count]
辞書区間によってソート済みセットのメンバーを返します。
9ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
スコアによってソート済みセットの指定区間内のメンバーを返します。
10ZRANK key member
ソート済みセット内の指定したメンバーのインデックスを返します。
11ZREM key member [member ...]
ソート済みセットから1つ以上のメンバーを削除します。
12ZREMRANGEBYLEX key min max
ソート済みセット内の指定した辞書区間のすべてのメンバーを削除します。
13ZREMRANGEBYRANK key start stop
ソート済みセット内の指定したランキング区間のすべてのメンバーを削除します。
14ZREMRANGEBYSCORE key min max
ソート済みセット内の指定したスコア区間のすべてのメンバーを削除します。
15ZREVRANGE key start stop [WITHSCORES]
ソート済みセット内の指定区間のメンバーをインデックスで返します。スコアは高いものから低いものの順です。
16ZREVRANGEBYSCORE key max min [WITHSCORES]
ソート済みセット内の指定したスコア区間のメンバーを返します。スコアは高いものから低いものの順にソートされます。
17ZREVRANK key member
ソート済みセット内の指定したメンバーのランキングを返します。ソート済みセットのメンバーはスコア値の降順(大きいものから小さいもの)でソートされます。
18ZSCORE key member
ソート済みセット内のメンバーのスコア値を返します。
19ZUNIONSTORE destination numkeys key [key ...]
指定された1つ以上のソート済みセットの和集合を計算し、新しい key に格納します。
20ZSCAN key cursor [MATCH pattern] [COUNT count]
ソート済みセット内の要素(要素メンバーと要素スコアを含む)を反復処理します。
その他の拡張