Set是string类型元素的集合。集合成员是惟一的,不能出现重复的数据;集合是经过哈希表实现的,最大的成员数达到2^32-1个php
命令 | 命令描述 | 实例 |
---|---|---|
SADD key member1 [member2] | 向集合key添加一个或多个成员,已经存在的成员将被忽略;若是key不存在,则会建立集合key而后执行插入操做;key不是集合Set类型,则返回一个错误,成功则返回被添加到集合中的新元素的数量,被忽略的成员不算 | SADD set1 'zhu','yu',返回:2 |
SPOP key [count] | 移除集合key中的一个或多个随机成员,并返回被移除的成员;集合不存在或者为空的时候返回nil;count参数只有在3.2+版本以上才能使用 | SPOP set1,返回:'yu' |
SCARD key | 返回集合中成员的个数,key不存在时返回0 | SCARD set1, 返回:4 |
SMEMBERS key | 返回集合中全部的成员。不存在的集合被视为空集合 | SMEMBERS set1;返回:"lin" "qing" "yu" "shan" |
SMOVE source destination member | 将指定成员member从source集合移动到destination集合中,SMOVE是原子操做,要么移动成功,要么移动失败;若是source集合不存在或者source集合中不存在member成员,则SMOVE不作任何操做,返回0;不然将member成员从source移除,添加到destination中去,并返回1;若是destination中存在member,SMOVE则将source中的member删除掉;若是source或destination不是集合,则返回一个错误。若是destination不存在,则建立一个destination并写入member值 | SMOVE set1 set2 'qing';则set2中存在值‘qing’,而set1中被删除 |
SREM key member1 [member2] | 移除集合key中一个或者多个成员元素,若是member不存在,则忽略此成员元素;若是key不是集合类型,则返回一个错误;成功则返回被移除元素的个数,不包括被忽略的成员元素 | SREM set2 'qing';返回:1 |
SRANDMEMBER key [count] | 返回集合key中的一个或者count个成员元素,可是不删除key中相应的成员元素;若是count大于0且小于集合的大小,则返回count个成员元素组成的数组;若是count大于0且大于集合的大小,则返回整个集合;若是count小于0,则返回一个具备重复值的数组,长度为count的绝对值;count参数存在,若是集合为空,则返回一个空数组;count参数不存在,若是集合为空则返回nil。 | SRANDMEMBER set1 2;返回:‘yu’ ‘lin’ |
SISMEMBER key member | 判断成员元素member是否存在于集合key中,若存在则返回1,不存在或者key不存在返回0; | SISMEMBER set1 'yu',返回1 |
SDIFF key1 [key2] | 返回给定全部集合的差集,不存在的key视为空集。差集的结果来自于first_key,而不是其余的key,也不是全部的key的差集;返回值的类型是列表 | set1('yu' 'lin' 'shan'),set2('lin','ops'),SDIFF set1 set2,返回‘yu’ ‘shan’ |
SDIFFSTORE destination key1 [key2] | 返回全部集合的差集并存到集合destination中,若是destination已经存在,则会被覆盖 | SDIFFSTORE set3 set1 set2,则set3的成员包括‘yu’ ‘shan’ |
SINTER key1 [key2] | 返回给定的全部集合的交集。不存在的集合视为空集,当给定集合中存在空集则结果集也为空集;成功则返回交集成员列表 | SINTER set1 set2,返回:‘lin’ |
SINTERSTORE destination key1 [key2] | 返回给定集合的交集并存储到集合destination中,若是destination已经存在则将其覆盖;成功则返回交集的个数 | SINTERSTORE set3 set1 set2;返回:1 |
SUNION key1 [key2] | 返回全部给定集合的并集,不存在的集合视为空集 | SUNION set1 set2,返回:"lin" "ops" "yu" "shan" |
SUNIONSTORE destination key1 [key2] | 将给定集合的并集写入到指定的集合destination中,若是destination已经存在,则将其覆盖;成功则返回并集的个数 | SUNIONSTORE set3 set1 set2,返回:4 |
SSCAN key cursor [MATCH pattern] [COUNT count] | 用于迭代集合中键的元素,返回数组列表 | SSCAN set1 0 match *n,返回数组0=>['lin' 'shan'] |
php $ret = $redis->sAdd($key1,'zhu','yu'); var_dump($ret); /* 2 */
php $redis->sAdd($key1,'lin','qing'); $ret = $redis->sPop($key1); var_dump($ret); /* ‘zhu’ */
php $ret = $redis->sCard($key1); var_dump($ret); /* 4 */
php $ret = $redis->sMembers($key1); var_dump($ret); /* array(4) { [0]=> string(4) "qing" [1]=> string(3) "lin" [2]=> string(2) "yu" [3]=> string(3) "zhu" } */ $res = $redis->sMembers($key2); var_dump($res); /* array(0) { } */
php $ret = $redis->sMove($key1,$key2,'yu'); var_dump($ret); /* bool(true) */ $redis->sMembers($key2); /* ‘yu’ */
php $ret = $redis->sRem($key1,'lin'); var_dump($ret); /* int(1) */
php $redis->sRandMember($key1,2); /* array(2) { [0]=> string(4) "qing" [1]=> string(3) "zhu" } */ $redis->sRandMember($key1,-3); /* array(3) { [0]=> string(4) "qing" [1]=> string(3) "zhu" [2]=> string(4) "qing" } */ $redis->sRandMember($key4,-3); /* array(0) { } */ $redis->sRandMember('string1',6); /* bool(false) */
php $redis->sIsMember($key1,'qing'); /* true */
php $redis->sDiff($key1,$key2); /* array(2) { [0]=> string(4) "qing" [1]=> string(3) "zhu" } */
php $redis->sDiffStore($key3,$key1,$key2); /* 2 */
php $redis->sInter($key1,$key2); /* array(0) { } */
php $redis->sInterStore($key3,$key1,$key2);/* int(0) */
php $redis->sUnion($key1,$key2);/* array(3) { [0]=> string(4) "qing" [1]=> string(2) "yu" [2]=> string(3) "zhu" } */
php $redis->sUnionStore($key3,$key1,$key2); /* int(3) */