常用php操作redis命令整理(四)SET型別

OldBoy~發表於2018-01-25

SADD

將一個或多個member元素加入到集合key當中。(從左側插入,最後插入的元素在0位置),集合中已經存在TK 則返回false,不存在新增成功 返回true

<?php
var_dump($redis->sadd('set-key','A','B','C')); //int(3)

SMEMBERS

返回集合key中的所有成員。

<?php
var_dump($redis->sMembers('set-key')); //array(3) { [0]=> string(1) "C" [1]=> string(1) "A" [2]=> string(1) "B" }

SREM

移除集合key中的一個或多個member元素,不存在的member元素會被忽略。

<?php
$redis->srem('set-key','C'); //移除set-key中的C元素

SISMEMBER

判斷member元素是否是集合key的成員。如果member元素是集合的成員,返回1。如果member元素不是集合的成員,或key不存在,返回0。

<?php
var_dump($redis->sismember('set-key','A'));  //bool(true) 
var_dump($redis->sismember('set-key','F'));  //bool(false)

SCARD

返回集合key的基數(集合中元素的數量)。

<?php
var_dump($redis->scard('set-key'));  //int(3)

SMOVE

將指定元素從指定集合移動到目標集合。smove(要移除元素的集合,要移動到的目標集合,要移除的元素);

<?php
$redis->sadd('s-key1','A','B','C');
$redis->sadd('s-key2','1','2','3');

var_dump($redis->smove('s-key1','s-key2','C'));  //key1集合存在元素返回bool(true)
var_dump($redis->smove('s-key1','s-key2','F'));  //key1集合不存在元素返回 bool(false)

var_dump($redis->smembers('s-key1'));  //array(2) { [0]=> string(1) "A" [1]=> string(1) "B" }
var_dump($redis->smembers('s-key2')); // array(4) { [0]=> string(1) "C" [1]=> string(1) "3" [2]=> string(1) "2" [3]=> string(1) "1" }

SPOP

隨機返回容器中一個元素,並移除該元素

<?php
$redis->sadd('s-key','A','B','C','D','E');
var_dump($redis->spop('s-key'));  //string(1) "E"
var_dump($redis->spop('s-key2'));  //該key不存在 ,返回bool(false)

SRANDMEMBER

隨機返回容器中一個元素,不移除該元素

<?php
$redis->srandmember('s-key');  

SINTER

返回兩個集合的交集 沒有交集返回一個空陣列,若引數只有一個集合,則返回集合對應的完整的陣列

<?php
$redis->sadd('s-key1','A','B','C','D','E');
$redis->sadd('s-key2','E','G','C','F','E');
var_dump($redis->sinter('s-key1','s-key2'));   //array(2) { [0]=> string(1) "C" [1]=> string(1) "E" }

SINTERSTORE

將兩個集合的交集放入另一個集合裡。

<?php
$redis->sadd('s-key1','A','B','C','D','E');
$redis->sadd('s-key2','E','G','C','F','E');
var_dump($redis->sInterStore('store','s-key1','s-key2'));   //int(2) 
 
 var_dump($redis->smembers('store'));   // array(2) { [0]=> string(1) "C" [1]=> string(1) "E" }

SUNION

返回兩個集合的並集,即使多個集合有相同元素 只保留一個

<?php
$redis->sadd('s-key1','A','B','C','D','E');
$redis->sadd('s-key2','E','G','C','F','E');
var_dump($redis->sunion('s-key1','s-key2'));   
//array(7) { [0]=> string(1) "C" [1]=> string(1) "A" [2]=> string(1) "G" [3]=> string(1) "F" [4]=> string(1) "B" [5]=> string(1) "D" [6]=> string(1) "E" }

SUNIONSTORE

將兩個集合的並集放入另一個集合裡。

<?php
$redis->sadd('s-key1','A','B','C','D','E');
$redis->sadd('s-key2','E','G','C','F','E');  
var_dump($redis->sUnionStore('store','s-key1','s-key2'));   //int(7)
var_dump($redis->smembers('store'));   
//array(7) { [0]=> string(1) "C" [1]=> string(1) "A" [2]=> string(1) "G" [3]=> string(1) "F" [4]=> string(1) "B" [5]=> string(1) "D" [6]=> string(1) "E" }

SDIFF

返回兩個集合的差集,注意是存在於第一個引數集合裡的元素

<?php
$redis->sadd('s-key1','A','B','C','D','E');
$redis->sadd('s-key2','E','G','C','F','E');
var_dump($redis->sdiff('s-key1','s-key2'));   //返回陣列,該陣列元素是存在於s-key1集合而不存在於集合s-key2
//array(3) { [0]=> string(1) "A" [1]=> string(1) "B" [2]=> string(1) "D" }
<?php
$redis->sadd('s-key1','A','B','C','D','E');
$redis->sadd('s-key2','E','G','C','F','E');
$redis->sadd('s-key3','A','B','H','R','J');
var_dump($redis->sdiff('s-key1','s-key2','s-key3'));   //返回陣列,該陣列元素是存在於s-key1集合而不存在於集合s-key2,s-key3
//array(1) { [0]=> string(1) "D" }

SDIFFSTORE

將兩個集合的差集放入另一個集合裡。

<?php
$redis->sadd('s-key1','A','B','C','D','E');
$redis->sadd('s-key2','E','G','C','F','E');
var_dump($redis->sdiffstore('store','s-key1','s-key2')); //int(3)
var_dump($redis->smembers('store')); //array(3) { [0]=> string(1) "A" [1]=> string(1) "B" [2]=> string(1) "D" }

 

相關文章