<?phprequire ('redistest.php');/*** Class setcache*集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,由于集合类型在Redis内部是使用值为空的散列表(hash table)实现的,所以这些操作的时间复杂度都是0(1)。*/classsetcacheextendscache{/***向名称为key的set中添加元素value,如果value存在,丌写入,return false**@param$key string键名*@param$value键值*@returnbool true|false*/public functionsAdd($key,$value){return$this->redis->sAdd($key,$value);}/***删除名称为key的set中的元素value**@param$key string键名*@param$value键值*@returnbool true|false*/public functionsRem($key,$value){return$this->redis->sRem($key,$value);}/***将value元素从名称为key1的集合移到名称为key2的集合**@param$key1 string集合名*@param$key2 string集合名*@param$value值*@returnbool true|false*/public functionsMove($key1,$key2,$value){return$this->redis->sMove($key1,$key2,$value);}/***判断一个元素是否在集合中是一个时间复杂度为0(1)的操作,无论集合中有多少个元*素,SISMEMBER命令始终可以极快地返回结果。**@param$key string集合名*@param$value*@returnbool true|false*/public functionsIsMember($key,$value){return$this->redis->sIsMember($key,$value);}//sContains作用同sIsMember一样/***返回名称为key的set的元素个数 同sSize**@param$key string*@returnint返回集合中的数值*/public functionsCard($key){return$this->redis->sCard($key);}/***随机返回并删除名称为key的set中一个元素**@param$key string*@returnstring|bool返回set中的元素,如果set为空就返回false*/public functionsPop($key){return$this->redis->sPop($key);}/***随机返回名称为key的set中一个元素,不删除**@param$key string*@returnmixed*/public functionsRandMember($key){return$this->redis->sRandMember($key);}/***求两个集合的交集*@param$key1 string集合1*@param$key2 string集合2*@returnarray*/public functionsInter($key1,$key2){return$this->redis->sInter($key1,$key2);}/***将给定多个集合key之间的交集存储在指定的集合output中。如果指定的集合已经存在,则将其覆盖*下面只是两个*@param$output string集合*@param$key1 string集合*@param$key2 string集合*@returnint交集的个数*/public functionsInterStore($output,$key1,$key2){return$this->redis->sInterStore($output,$key1,$key2);}/***求多个集合的交集*@param$keyarray array*@returnarray*/public functionsInterArray($keyarray){$keystr='';foreach($keyarrayas$k){$keystr.='\''.$k.'\',';}$keystr=substr($keystr,0,-1);$str='$result=$this->redis->sInter('.$keystr.');';eval($str);return$result;}/***求多个集合的并集(三个集合)**@param$key1 string集合1*@param$key2 string集合2*@param$key3 string集合3*@returnarray*/public functionsUnion($key1,$key2,$key3){return$this->redis->sUnion($key1,$key2,$key3);}/***求并集并将并集保存到output的集合*@param$output要存储的集合*@param$key1 string集合1*@param$key2 string集合2*@param$key3 string集合3*@returnint并集的数目*/public functionsUnionStore($output,$key1,$key2,$key3){return$this->redis->sUnionStore($output,$key1,$key2,$key3);}/***求差集 (集合减去两个集合的交集)** key1-key2* {1, 2, 3}-{2, 3, 4}={1}* {2, 3, 4}-{1, 2, 3}={4}*@param$key1 string*@param$key2 string*@returnarray* SDIFF setA setB setC计算顺序是先计算setA-setB,再计算结果与setC的差集*/public functionsDiff($key1,$key2){return$this->redis->sDiff($key1,$key2);}/***返回集合中被的所有元素*同sGetMembers*@param$key string集合*@returnarray*/public functionsMembers($key){return$this->redis->sMembers($key);}/***排序分页(直接拿来用)* sort* $redis->delete('s');* $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3); var_dump($redis->sort('s')); // 1,2,3,4,5* var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1* var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5*/}