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) */