redis排行榜

5 篇文章 0 订阅

 redis的有序集合zset类似于Java的SoretedSet和HashMap的结合体,一方面它是一个set,可以保证内部value的唯一性,另一方面它可以给每个value赋予一个score,代表这个score的排序权重。

 

 zset可以用来存储学生的成绩,value值是学生的ID,score是学生的考试成绩,可以通过对成绩按分数进行排名得到学生名词。还可以用来存储粉丝列表,value值是粉丝的用户ID,score是关注时间,可以对粉丝列表按关注时间进行排序。

 public function rankingList()
    {
        //连接redis
        $redis = new Redis();
        $redis->connect('127.0.0.1', '6379');
        //查询数据
        $data =  Money::select()->toArray();
//        dd($data);
        //数组处理  累加佣金
//        $newArr = array();
//        foreach ($data as $v)
//        {
//            if (array_key_exists($v['tid'],$newArr))
//            {
//                $newArr[$v['tid']]['money'] += $v['money'];
//            }
//            else {
//                $newArr[$v['tid']] = $v;
//            }
//        }
//        dd($newArr);
//        添加到redis有序集合
        foreach ($data as $v)
        {
            $redis->zincrby('tag1',$v['money'],$v['tid']);
        }
        $data = $redis->zrevrange('tag1', 0, -1);
        $ids = implode(',', $data);
//        $score = $redis->zRevRange('tag1', 0, -1, true);
        //判断数据时间排行
        if(!empty($time))
        {
            $data = Money::whereTime('add_time',$time)->whereIn('tid', $ids)->order(Db::raw("FIELD(tid,$ids)"))->select()->toArray();

        }else{
            $data = Money::whereIn('tid', $ids)->order(Db::raw("FIELD(tid,$ids)"))->select()->toArray();
        }
        dd($data);
    }

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值