<?php
require('redistest.php');
/**
* Class setcache
* 集合類型的經常使用操做是向集合中加入或刪除元素、判斷某個元素是否存在等,因爲集合
類型在Redis內部是使用值爲空的散列表(hash table)實現的,因此這些操做的時間複雜度都是
0(1)。
*/
class setcache extends cache{
/**
* 向名稱爲key的set中添加元素value,若是value存在,丌寫入,return false
*
* @param $key string 鍵名
* @param $value 鍵值
* @return bool true|false
*/
public function sAdd($key,$value){
return $this->redis->sAdd($key,$value);
}
/**
*刪除名稱爲key的set中的元素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同樣
/**
* 返回名稱爲key的set的元素個數 同sSize
*
* @param $key string
* @return int 返回集合中的數值
*/
public function sCard($key){
return $this->redis->sCard($key);
}
/**
* 隨機返回並刪除名稱爲key的set中一個元素
*
* @param $key string
* @return string|bool 返回set中的元素,若是set爲空就返回false
*/
public function sPop($key){
return $this->redis->sPop($key);
}
/**
* 隨機返回名稱爲key的set中一個元素,不刪除
*
* @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
*/
}