php對redis的zset(有序集合)操做

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

class zsetcache extends cache{

   /**
    *向名稱爲keyzset中添加元素memberscore用亍排序。若是該元素已經存在,則根據score更新該元素的順序。
    *ZADD命令的返回值是新加入到集合中的元素個數
    *
    * @param $key string 集合名稱
    * @param $score int 分數
    * @param $member string
    * @return int 返回插入的個數
    */
   public function zAdd($key,$score,$member){

       return $this->redis->zAdd($key,$score,$member);
   }

   /**
    * 返回名稱爲keyzset(元素已按score從小到大排序)中的indexstartend的全部元素
    * ZRANGE命令會按照元素分數從小到大的順序返回索引從startstop之間的全部元素(包
    * 含兩端的元素)。ZRANGE命令與LRANGE命令十分類似,如索引都是從0開始,負數表明從後
    * 向前查找(-1表示最後一個元素)
    *
    * @param $key string 集合名稱
    * @param $start int 開始
    * @param $end   int  結束
    * @param bool $withscores 是否查找分數
    * @return array 返回集合的的數組
    */
   public function zRange($key,$start,$end,$withscores=False){
       if($withscores){
           return $this->redis->zRange($key,$start,$end,true);
       }else{
           return $this->redis->zRange($key,$start,$end);
       }
   }

   /**
    * 刪除名稱爲keyzset中的元素member,返回刪除的個數
    *做用同zDelete
    *
    * @param $key string 集合
    * @param $member string 元素
    * @return int 刪除的個數
    */
   public function zRem($key,$member){

       return $this->redis->zRem($key,$member);
   }

   /**
    * zRange功能同樣,只是zRevRange返回的元素是按score從大到小排序的
    *
    * @param $key string 集合名稱
    * @param $start int 開始
    * @param $end  int  結束
    * @param bool $withscores 是否查找分數
    * @return array 返回集合的的數組
    */
   public function zRevRange($key,$start,$end,$withscores=False){

       if($withscores){
           return $this->redis->zRevRange($key,$start,$end,true);
       }else{
           return $this->redis->zRevRange($key,$start,$end);
       }
   }

   /**
    * @param $key string 集合名稱
    * @param $start int 開始
    * @param $end  int  結束
    * @param $limit
    * @param bool|False $withscores 是否查找分數
    * @return mixed
    */
   public function zRangeByScore($key,$start,$end,$limit,$withscores=False){
       if($withscores){
           return $this->redis->zRangeByScore($key,$start,$end,array('$withscores'=>TRUE,'limit'=>$limit));
       }else{
           return $this->redis->zRangeByScore($key,$start,$end,array('limit'=>$limit));
       }
   }

   /**
    * 返回名稱爲keyzsetscore >= starscore <= end的全部元素的個數
    *
    * @param $key string 集合名稱
    * @param $start int 開始
    * @param $end  int 結束
    * @return int
    */
   public function zCount($key,$start,$end){

       return $this->redis->zCount($key,$start,$end);
   }

   /**
    *刪除名稱爲keyzsetscore >= starscore <= end的全部元素,返回刪除個數
    *
    * @param $key string 集合名稱
    * @param $start int 開始
    * @param $end  int 結束
    * @return int
    */
   public function zRemRangeByScore($key,$start,$end){

       return $this->redis->zRemRangeByScore($key,$start,$end);
   }

   /**
    * 返回名稱爲keyzset的全部元素的個數
    * 做用同zCard
    * @param $key 集合名稱
    * @return Int 返回個數
    */
   public function zSize($key){

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

   /**
    * 返回集合key中元素member的分數
    *
    * @param $key string 集合
    * @param $member string 元素
    * @return float|bool 分數(若是不存在就返回false)
    */
   public function zScore($key,$member){

       return $this->redis->zScore($key,$member);
   }

   /**
    *返回名稱爲keyzset(元素已按score從小到大排序)中val元素的rank(即index,從0開始),若沒有val元素,返回「0」
    * 就是返回比元素$member分數小的元素的個數
    *
    * @param $key string 集合
    * @param $member string 元素
    * @return int
    */
   public function zRank($key,$member){

       return $this->redis->zRank($key,$member);
   }

   /**
    * 就是返回比元素$member分數大的元素的個數
    * @param $key string 集合
    * @param $member string 元素
    * @return int
    */
   public function zRevRank($key,$member){

       return $this->redis->zRevRank($key,$member);
   }

   /**
    * 若是在名稱爲keyzset中已經存在元素member,則該元素的score增長increment;不然向集合中添加該元素,其score的值爲increment
    *
    * @param $key 集合
    * @param $increment 分數
    * @param $member 元素
    * @return int 增長的分數
    */
   public function zIncrBy($key,$increment,$member){

       return $this->redis->zIncrBy($key,$increment,$member);
   }

   /**
    * 求有序集合的並集
    *
    * @param $output要保存的集合
    * @param $zsetkey 求並集的集合
    * @return int 集合的數目
    */
   public function zUnion($output,$zsetkey){

           return $this->redis->zUnion($output,$zsetkey);

   }

   /**
    * 求有序集合的交集
    *
    * @param $output要保存的集合
    * @param $zsetkey 求並集的集合
    * @return int 集合的數目
    */
   public function zInter($output,$zsetkey){

       return $this->redis->zInter($output,$zsetkey);

   }
   
}
相關文章
相關標籤/搜索