php对redis的set(集合)操作

<?php
require('redistest.php');

/**
* Class setcache
* 集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,由于集合
类型在Redis内部是使用值为空的散列表(hash table)实现的,所以这些操作的时间复杂度都是
0(1)
*/
class setcache extends cache{

   /**
    * 向名称为keyset中添加元素value,如果value存在,丌写入,return false
    *
    * @param $key string 键名
    * @param $value   键值
    * @return bool true|false
    */
   public function sAdd($key,$value){

       return $this->redis->sAdd($key,$value);
   }

   /**
    *删除名称为keyset中的元素value
    *
    * @param $key string 键名
    * @param $value 键值
    * @return bool true|false
    */
   public function sRem($key,$value){

       return $this->redis->sRem($key,$value);
   }

   /**
    * value元素从名称为key1的集合移到名称为key2的集合
    *
    * @param $key1 string 集合名
    * @param $key2 string 集合名
    * @param $value
    * @return bool true|false
    */
   public function sMove($key1,$key2,$value){

       return $this->redis->sMove($key1,$key2,$value);
   }

   /**
    * 判断一个元素是否在集合中是一个时间复杂度为0(1)的操作,无论集合中有多少个元
    * 素,SISMEMBER命令始终可以极快地返回结果。
    *
    * @param $key string 集合名
    * @param $value
    * @return bool true|false
    */
   public function sIsMember($key,$value){

       return $this->redis->sIsMember($key,$value);
   }//sContains作用同sIsMember一样

   /**
    * 返回名称为keyset的元素个数 同sSize
    *
    * @param $key string
    * @return int 返回集合中的数值
    */
   public function sCard($key){

       return $this->redis->sCard($key);
   }

   /**
    * 随机返回并删除名称为keyset中一个元素
    *
    * @param $key string
    * @return string|bool 返回set中的元素,如果set为空就返回false
    */
   public function sPop($key){

       return $this->redis->sPop($key);
   }

   /**
    * 随机返回名称为keyset中一个元素,不删除
    *
    * @param $key string
    * @return mixed
    */
   public function sRandMember($key){

       return $this->redis->sRandMember($key);
   }

   /**
    * 求两个集合的交集
    * @param $key1 string 集合1
    * @param $key2 string 集合2
    * @return array
    */
   public function sInter($key1,$key2){

       return $this->redis->sInter($key1,$key2);
}

   /**
    * 将给定多个集合key之间的交集存储在指定的集合output中。如果指定的集合已经存在,则将其覆盖
    *下面只是两个
    * @param $output string 集合
    * @param $key1 string 集合
    * @param $key2 string 集合
    * @return int 交集的个数
    */
   public function sInterStore($output,$key1,$key2){

       return $this->redis->sInterStore($output,$key1,$key2);
   }

   /**
    * 求多个集合的交集
    * @param $keyarray array
    * @return array
    */
   public function  sInterArray($keyarray){

       $keystr='';
           foreach($keyarray as $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
    * @return array
    */
   public function sUnion($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
    * @return int 并集的数目
    */
   public function sUnionStore($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
    * @return array
    * SDIFF setA setB setC 计算顺序是先计算setA-setB,再计算结果与setC的差集
    */
   public function sDiff($key1,$key2){

       return $this->redis->sDiff($key1,$key2);
   }

   /**
    * 返回集合中被的所有元素
    * sGetMembers
    * @param $key string 集合
    * @return array
    */
   public function sMembers($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
    */
}


你可能感兴趣的:(redis,PHP,set)