RedisのSetタイプの使用と応用を深く理解する

2489 ワード

Redis集合(Set)


RedisのSetはstring型の無秩序集合である.集合メンバーは一意です.これは、集合に重複するデータが表示されないことを意味します.Redisにおける集合はハッシュテーブルによって実現されるので,追加,削除,検索の複雑さはいずれもO(1)である.コレクションの最大メンバー数は232~1です(4294967295、各コレクションに40億人以上のメンバーを格納できます).

Setの適用シーン


私たちがQQを使うとき、よくQQの友达の推薦を受け取ることができます.
この機能はSetで実現できる.
もし私たちが想像してみて、私达は伝统的な関系型データベースでこの机能を実现するには、私达は比较的に复雑な検索を行う必要があります.まずAの友达の関系を取得する必要があります.これは表の接続操作を行う必要があります.それからBの友达の関系を取得して、それから検索を行って、交差差集などの演算を行う可能性があります.同時にデータベースの負荷が増加します.
しかし、setで実現すれば、直接簡単です.まず1つのsetでAの友达を保存して、それから1つのsetでBの友达を保存して、このように私达は共通の友达が直接setで交差演算を行うことを知りたいと思って、これはredisのsetの中で比較的に実現しやすいです.

Setのコマンド


Saddコマンド


Redis Saddコマンドは、1つ以上のメンバー要素をコレクションに追加します.すでにコレクションに存在するメンバー要素は無視されます.コレクションkeyが存在しない場合は、追加した要素のみをメンバーとして含むコレクションを作成します.コレクションkeyがコレクションタイプでない場合、エラーが返されます.注意:Redis 2.4リリース以前は、SADDは単一のメンバー値のみを受け入れていました.構文redis Saddコマンドの基本構文は次のとおりです.
redis 127.0.0.1:6379> SADD KEY_NAME VALUE1..VALUEN

無視された要素を含まない、コレクションに追加された新しい要素の数を返します.

Smembersコマンド


Redis Smembersコマンドは、セット内のすべてのメンバーを返します.存在しない集合keyは空の集合と見なされる.構文redis Smembersコマンドの基本構文は次のとおりです.
redis 127.0.0.1:6379> SMEMBERS KEY VALUE 

値セット内のすべてのメンバーを返します.

Sinterコマンド


Redis Sinterコマンドは、所与のすべての所与の集合の交差を返します.存在しない集合keyは空の集合と見なされる.与えられた集合の中に空の集合がある場合、結果も空の集合である(集合演算の法則に従う).構文redis Sinterコマンドの基本構文は次のとおりです.
redis 127.0.0.1:6379> SINTER KEY KEY1..KEYN 

値の交差メンバーのリストを返します.

Sdiffコマンド


Redis Sdiffコマンドは、指定されたセット間の差セットを返します.存在しないコレクションkeyは空のセットとみなされます.構文redis Sdiffコマンドの基本構文は次のとおりです.
redis 127.0.0.1:6379> SDIFF FIRST_KEY OTHER_KEY1..OTHER_KEYN 

戻り値には、差セットメンバーのリストが含まれます.

Sunionコマンド


Redis Sunionコマンドは、指定されたセットの並列セットを返します.存在しない集合keyは空の集合と見なされる.構文redis Sunionコマンドの基本構文は次のとおりです.
redis 127.0.0.1:6379> SUNION KEY KEY1..KEYN

値とセットのメンバーのリストを返します.

Scardコマンド


Redis Scardコマンドは、コレクション内の要素の数を返します.構文redis Scardコマンドの基本構文は次のとおりです.
redis 127.0.0.1:6379> SCARD KEY_NAME 

値セットの数を返します.コレクションキーが存在しない場合は、0を返します.

Sremコマンド


Redis Sremコマンドは、集合内の1つ以上のメンバー要素を除去するために使用され、存在しないメンバー要素は無視されます.keyがコレクションタイプでない場合、エラーが返されます.SREMは、Redis 2.4リリース以前は単一のメンバー値のみを受け入れていました.構文redis Sremコマンドの基本構文は次のとおりです.
redis 127.0.0.1:6379> SREM KEY MEMBER1..MEMBERN

無視された要素を含まない値が正常に除去された要素の数を返します.