データ型関連の操作を設定する
Redis では、Set 型を並べ替えられていない文字のコレクションとみなすことができ、List 型と同様に、この型のデータ値に対して要素の追加、削除、または存在するかどうかの判断などの操作を実行することもできます。これらの操作の時間計算量は O(1)、つまり操作は一定時間で完了することに注意してください。 Set に含めることができる要素の最大数は 4294967295 です。
List 型とは異なり、Set コレクションでは重複要素は許可されません。これは、C++ 標準ライブラリの Set コンテナーとまったく同じです。つまり、同じ要素を複数回追加した場合、その要素のコピーは 1 つだけセット内に保持されます。 Set 型は、List 型と比較して、複数の Set 間の和集合、積集合、差分などの集計演算がサーバー側で完結するという非常に重要な機能的特徴もあります。これらの操作はサーバー側で完了するため、非常に効率的であり、ネットワーク IO オーバーヘッドを大幅に節約できます。
追加
説明
key に格納されている設定値に値を追加します。この値がすでにセットに含まれている場合は、FALSE が返されます。
SET コンテナに VALUE を追加します。 VALUE が既に SET に存在する場合は、FLASE を返します。
パラメータ
キー値
戻り値
BOOL 値が存在せず、正常に追加された場合は TRUE、値がすでに存在する場合は FALSE。
例
$redis->sAdd('key1' , 'member1') /* TRUE, 'key1' => {'member1'} */
;
$redis->sAdd('key1' , 'member2') /* TRUE, 'key1' => {'member1', 'member2'}*/
;
$redis->sAdd('key1' , 'member2') /* FALSE, 'key1' => {'member1', 'member2'}*/
;
sRem、sRemove
説明
key に格納されている設定値から指定されたメンバーを削除します。
パラメータ
主要メンバー
BOOL メンバーがセット内に存在する場合は TRUE、存在しない場合は FALSE。
例
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3') /* 'key1' => {'member1', 'member2', 'member3'}*/
;
$redis->sRem('key1', 'member2') /* 'key1' => {'member1', 'member3'} */
;
移動
説明
指定されたメンバーを srcKey のセットから dstKey のセットに移動します。
指定された MEMBER をソース SET から別の指定された SET に移動します。
パラメータ
srcKey dstKey メンバー
戻り値
操作が成功した場合、ソース SET またはターゲット SET が存在しない場合、またはソース SET に MEMBER が存在しない場合は、FLASE が返されます。
$redis->sAdd('key1' , 'member11');
$redis->sAdd('key1' , 'member12');
$redis->sAdd('key1' , 'member13') /* 'key1' => {'member11', 'member12', 'member13'}*/
$redis->sAdd('key2' , 'member21');
$redis->sAdd('key2' , 'member22') /* 'key2' => {'member21', 'member22'}*/
;
$redis->sMove('key1', 'key2', 'member13'); /* 'key1' => {'member11', 'member12'} */
/* 'key2' =>
sIsMember、sContains
説明
値がキー key に格納されているセットのメンバーであるかどうかを確認します。
VALUE が SET コンテナのメンバーであるかどうかを確認します。
パラメータ
戻り値
BOOL 値がキー key のセットのメンバーである場合は TRUE、それ以外の場合は FALSE。
例
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3') /* 'key1' => {'member1', 'member2', 'member3'}*/
$redis->sIsMember('key1', 'member1'); /* TRUE */
$redis->sIsMember('key1', 'memberX'); /* FALSE */
sカード、sサイズ
説明
SETコンテナのメンバー数を返します
パラメータ
鍵
戻り値
LONG キーによって識別されるセットのカーディナリティ。セットが存在しない場合は 0。
例
$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'メンバー 1', 'メンバー 2', 'メンバー 3'}*/
$redis->sCard('key1'); /* 3 */
$redis->sCard('keyX'); /* 0 */
ポップ
説明
Key に設定された値からランダムな要素を削除して返します。
要素を機械的に返し、SET コンテナ内でその要素を削除します。
パラメータ
鍵
文字列「ポップされた」値
キーで識別されるセットが空か存在しない場合は Bool FALSE
$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'メンバー 3', 'メンバー 1', 'メンバー 2'}*/
$redis->sPop('key1'); /* 'member1', 'key1' => {'メンバー 3', 'メンバー 2'} */
$redis->sPop('key1'); /* 'member3', 'key1' => {'メンバー2'} */
sランドメンバー
説明
Key の設定値からランダムな要素を削除せずに返します。
パラメータ
鍵
戻り値
キーで識別されるセットが空か存在しない場合は Bool FALSE
例
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'メンバー 3', 'メンバー 1', 'メンバー 2'}*/
$redis->sRandMember('key1'); /* 'member1', 'key1' => {'メンバー 3', 'メンバー 1', 'メンバー 2'} */
$redis->sRandMember('key1'); /* 'member3', 'key1' => {'メンバー 3', 'メンバー 1', 'メンバー 2'} */
インター
説明
指定されたキーに保持されているすべてのセットの交差から得られるセットのメンバーを返します。単一のキーだけが指定されている場合、このコマンドはこのセットのメンバーを生成します。キーの 1 つが欠落している場合は、FALSE が返されます。
指定されたSETSセットの交雑結果を返します。SETセットのみが指定された場合は、そのSETセットを返します。パラメータにパラメータ指定がある場合は、FLASEを返します。
key1、key2、keyN: 交差を適用するさまざまなセットを識別するキー。
パラメータ数列表、異なるSETセットを表します。
戻り値
数値グループ内の結果がすべての SET セットの交合結果である場合は、空の数値グループが返されます。
例
$redis->sAdd('key1', 'val1');
$redis->sAdd('key1', 'val3');
$redis->sAdd('key1', 'val4');
$redis->sAdd('key2', 'val3');
$redis->sAdd('key2', 'val4');
$redis->sAdd('key3', 'val3');
var_dump($redis->sInter('key1', 'key2', 'key3'));
配列(2) {
文字列(4) "val4"
[1]=>
}
インターストア
説明
sInter コマンドを実行し、結果を新しいセットに保存します。
交換操作を実行し、結果を新しい SET コンテナに保存します。
パラメータ
キー: dstkey、差分を保存するキー。
キー: key1、key2...keyN。 key1..keyN は sInter.
のように交差します。
交流コレクションのキーを要求します
戻り値
INTEGER: 結果のセットのカーディナリティ、またはキーが欠落している場合は FALSE。例
$redis->sAdd('key1', 'val1');
$redis->sAdd('key1', 'val2');
$redis->sAdd('key1', 'val3');
$redis->sAdd('key1', 'val4');
$redis->sAdd('key2', 'val3');
$redis->sAdd('key2', 'val4');
$redis->sAdd('key3', 'val3');
$redis->sAdd('key3', 'val4');
var_dump($redis->sInterStore('output', 'key1', 'key2', 'key3'));
var_dump($redis->sMembers('output'));
出力:
int(2)
配列(2) {
[0]=>
文字列(4) "val4"
[1]=>
文字列(4) "val3"
}
ユニオン
説明
N 個のセット間の結合を実行し、それを返します。
N 個の SET コンテナ間で操作を実行して収集し、結果を返します。
パラメータ
キー: key1、key2、...、keyN: Redis 内のセットに対応する任意の数のキー
文字列の配列: これらすべてのセットの結合です。
例
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '2');
$redis->sAdd('s1', '3');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
$redis->sAdd('s2', '4');
戻り値: s0、s1、または s2 のいずれかにあるすべての要素
[0]=>
文字列(1) "3"
[1]=>
文字列(1) "4"
[2]=>
文字列(1) "1"
[3]=>
文字列(1) "2"
}
ユニオンストア
説明
sUnion と同じアクションを実行しますが、結果を最初のキーに保存します
パラメータ
キー: dstkey、差分を保存するキー。
保存結果のSETセットKEY
キー: key1、key2、...、keyN: Redis 内のセットに対応する任意の数のキー。
収集したキーを要求します
戻り値
INTEGER: 結果のセットのカーディナリティ、またはキーが欠落している場合は FALSE。
整数値を返します: 結果の数値を収集します。
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
$redis->sAdd('s2', '4');
var_dump($redis->sUnionStore('dst', 's0', 's1', 's2'));
var_dump($redis->sMembers('dst'));
int(4)
配列(4) {
文字列(1) "3"
[1]=>
文字列(1) "4"
[2]=>
文字列(1) "1"
[3]=>
文字列(1) "2"
}
違います
説明
N セットの差分を実行して返します。
この操作は、計算された他の SET セットに対する最初の SET の差分演算を取得して結果を返します。 (Result = SET0 - (SET1 UNION SET2 UNION) ....SET N))
パラメータ
戻り値
文字列の配列: 最初のセットの違いは、他のすべてのセットに反映されます。
返回数グループ:最初のSETセットの补
例
$redis->delete('s0', 's1', 's2');$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s0', '3');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
戻り値: s1 にも s2 にも存在しない s0 のすべての要素
[0]=>
文字列(1) "4"
文字列(1) "2"
}
sDiffStore
説明
sDiff と同じアクションを実行しますが、結果を最初のキーに保存します
sDiff 関数は引き続き機能し、結果が新しい SET セットとして dstkey に保存されるだけです。
パラメータ
キー: dstkey、差分を保存するキー。
キー: 保存結果のSETセットKEY
キー: key1、key2、...、keyN: redis 内のセットに対応する任意の数のキー
SETコレクション運営に参加中
戻り値
INTEGER: 結果のセットのカーディナリティ、またはキーが欠落している場合は FALSE。
整数を返します: 結果セットの数。
例
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s0', '3');
$redis->sAdd('s0', '4');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
var_dump($redis->sDiffStore('dst', 's0', 's1', 's2'));
var_dump($redis->sMembers('dst'));
戻り値: s1 にも s2 にも存在しない s0 の要素の数
int(2)
配列(2) {
[0]=>
文字列(1) "4"
[1]=>
文字列(1) "2"
}
sメンバー、sGetMembers
説明
セットの内容を返します。
SET コレクション内のすべての要素を返します。
パラメータ
キー: キー
戻り値
要素の配列、セットの内容。
例
$redis->delete('s');
$redis->sAdd('s', 'a');
$redis->sAdd('s', 'b');
$redis->sAdd('s', 'a');
$redis->sAdd('s', 'c');
var_dump($redis->sMembers('s'));
出力:
配列(3) {
[0]=>
文字列(1) "c"
[1]=>
文字列(1) "a"
[2]=>
文字列(1) "b"
}
順序はランダムであり、redis 自体のセット構造の内部表現に対応します。
結果セットの順序はランダムであり、これは Redis 独自の SET データ構造の定義とも一致しています。繰り返されず、順序付けされていないコレクション。
著者: シユン・キリン を追加することもできます。