php redis 扩展类常用操作(5) - set

六、redis 集合(Set)操作

Redis Set 是 String 类型的无序集合,集合成员是唯一的。

它是能过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1) 。

集合中最大的成员数 2的32次方-1 个(每个集合可存储40多亿个成员)

1. sAdd - 向集合添加一个或多个成员
// 成功返回添加元素个数,失败时返回0
$redis->sAdd('set', 'v1', 'v2', 'v3');

2. sCard - 获取集合的成员数
// 成功时返回集合成员个数,当集合不存在时返回0
$redis->sCard('set');

3. sDiff - 返回第一个集合与其他集合之间的差异
$redis->sAdd('setB', 'v3','v4','v5');
$redis->sDiff('set', 'setB');
/* 输出
array(2) {
  [0]=>
  string(2) "v2"
  [1]=>
  string(2) "v1"
}
*/
4. sDiffStore - 返回给定所有集合的差集并存储在 destination 中
// 成功时返回差集中成员个数,失败时返回0; 
// destination 中存储的是 set 与其他集合对比的差集
$redis->sDiffStore('destination', 'set', 'setB');
/* 输出 destination 
array(2) {
  [0]=>
  string(2) "v2"
  [1]=>
  string(2) "v1"
}
*/
5. sInter - 返回给定集合的交集
// 成功时返回包含交集成员的数组,失败时返回空数组
$redis->sInter('set', 'setB');
/* 输出:
array(1) {
  [0]=>
  string(2) "v3"
}
*/
6. sInterStore - 返回给定所有集合的交集并存储在 destination 中
 // 返回交集中成员的个数
 $redis->sInterStore('destination', 'set', 'setB');
 
7. sIsMember - 判断元素是否是集合 key 的成员
// 成功时返回 true; 失败时返回 false
$redis->sIsMember('set', 'v8');

8. sMembers - 返回集合中的所有成员
// 成功时以数组形式输出集合的成员;集合不存在时返回 NULL 
$redis->sMembers('set');
/* 输出
array(3) {
  [0]=>
  string(2) "v1"
  [1]=>
  string(2) "v2"
  [2]=>
  string(2) "v3"
}
*/
9. sMembers - 将元素从一个集合移动到另一个集合
$redis->sAdd('key1', 'set11');
$redis->sAdd('key1', 'set12');
$redis->sAdd('key1', 'set13');
$redis->sAdd('key2', 'set21');
$redis->sAdd('key2', 'set22');
// 将元素 set13 从集合 key1 移动到集合 key2
$redis->sMove('key1', 'key2', 'set13');

$key1 = $redis->sMembers('key1');
var_dump($key1);
/* 输出
array(2) {
  [0]=>
  string(5) "set11"
  [1]=>
  string(5) "set12"
}
*/
$key2 = $redis->sMembers('key2');
var_dump($key2);
/* 输出 
array(3) {
  [0]=>
  string(5) "set22"
  [1]=>
  string(5) "set13"
  [2]=>
  string(5) "set21"
}
*/
10. sPop - 移除并返回集合中的一个随机元素
// 成功时返回元素; 失败时返回 false
$redis->sPop('key1');

11. sRandMember - 返回集合中一个或多个随机数
// 成功时返回数组;失败时返回空数组; 如果第二个参数不传递,返回一个字符串类型的元素值  
$redis->sRandMember('key1', 2);

12. sUnion - 返回所有给定集合的并集
// 返回数组
$redis->sUnion('set', 'setB');

13. sUnionStore - 所有给定集合的并集存储在 destination 集合中
// 返回并集中元素的个数;
$redis->sUnionStore('destination', 'key3', 'key4');

14. sscan - 用于迭代集合键中的元素
$redis->sAdd('set', 'A');
$redis->sAdd('set', 'B');
$redis->sAdd('set', 'C');
$redis->sAdd('set', 'D');
$iterator = null;
while ($members = $redis->sScan('set', $iterator)){
    foreach ($members as $member){
        echo $member . PHP_EOL;
    }
}
// 输出
/*
D
B
C
A
*/

你可能感兴趣的:(php redis 扩展类常用操作(5) - set)