redis常用其他命令

        

        SortedSet(有序集合)

        排行榜使用:

1.## 添加用户到有序集,
  ## 当key不存在,或 member不是key的成员时,ZINCRBY key increment member等同于ZADD key increment member
  ## score 值可以是整数值或双精度浮点数。
    $redis->zIncrBy($rankKey, $num, $uid);  

2.## 获取榜单分值
    $score = $cache->zScore($rank_key, $uid);

3.## 删除榜单指定元素【榜单存在数据,进行删除操作】
    if ($redis->zScore($rank_key, $uid) !== false) {
          $redis->zRem($rank_key, $uid);
    }
      
4.## 获取榜单【获取榜单指定区间元素】
    $rankList = $redis->zRevRange($rank_key, $start, $end, true);
        
5.## 获取榜单成员数
    $rankNum = $redis->zCard($rank_key);
        
6.## 获取榜单成员排名,不在榜单返回false
    $rank_index = $redis->zRevRank($rank_key, $data_id);
    $rank_index  = ($rank_index === false) ? false : ($rank_index + 1);
               
7.## 获取倒序排名
    $rank_id    = $cache->zRevRank($rank_key, $uid);
    $new_rank_id  = $rank_id + 1;//计算真实排名
    $result['rank'] = $new_rank_id > 50 ? '50+' : $new_rank_id;
    
    ##领先落后,$limit 和多少做比较
    function getRankData($limit-1,)
    {
        //....
        if ($rank_id > $limit){
            $result['rank_type']   = 2;//1领先,2落后
          $result['rank_contrast_id'] = $limit + 1;
          $rank_list          = $cache->zRevRange($rank_key, $limit, $limit, true);
          $next_score         = empty(current($rank_list)) ? 0 : current($rank_list);
          $result['rank_score']    = ($next_score - $score) > 0 ? ($next_score-$score) : '0';
        }
        else{
          $result['rank_type']     = 1;
          $result['rank_contrast_id'] = $rank_id + 2;
          $rank_list          = $cache->zRevRange($rank_key, $new_rank_id, $new_rank_id, true);
          $next_score          = empty(current($rank_list)) ? 0 : current($rank_list);
          $result['rank_score']     = ($score - $next_score) > 0 ? ($score-$next_score) : '0';
        }
    }


        Set(集合)

        排行榜使用:

1. ## 是否是淘汰用户,判断 member 元素是否集合 key 的成员。
    $redis->sIsMember($user_list_key, $uid)    
     
2.  ## 添加用户到淘汰列表
    $redis->sAdd($user_list_key, $uid);       
    if ($redis->ttl($user_list_key) == -1) {
        $redis->expire($user_list_key, $this->redis_len);
    }


        Hash(哈希表)

       排行榜使用:

1. ## 做任务 ,
    ## 如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。
    $total_money    = $redis->hIncrBy($hash_key, 'money', $price);
    
2. ## 做任务 ,
    ## 会先将域 field 的值设为 0 ,然后再执行加法操作
    ## 为哈希表 key 中的域 field 加上浮点数增量 increment
    $total_money    = $redis->hIncrByFloat($hash_key, 'money', $price);

 


冷暖自知一抹茶ck
请先登录后发表评论
  • 最新评论
  • 总共0条评论