php redis 有序集合简单使用说明

    public function handle()
    {
        $student = 'student_' . 5;
        $key = 'student_score_1';
        $key2 = 'student_score_2';
        $redis = Redis::connection();
//        echo '删除数据:' . $redis->del([$key]);exit;
//        $data = [];
//        for ($studentId = 1; $studentId <= 100; $studentId++) {
//            $data['student_' . $studentId] = random_int(20, 100);
//        }
//
//      echo "添加数据:" . $redis->zadd($key, $data);exit;                                                                                  /*1*/
        echo '参与人数:' . $redis->zcard($key) . "\r\n";                                                                                   /*2*/
        echo '80-100分人数:' . $redis->zcount($key, 80, 100) . "\r\n";                                                           /*3*/
//      echo '加分数:' . $redis->zincrby($key, 10, $studentId) . "\r\n";                                                                   /*4*/
        //交集:默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和(sum|min|max)
        echo '求交集:' . $redis->zinterstore('student_score_final', [$key, $key2], ['aggregate' => 'sum']) . "\r\n";             /*5*/
        echo 'TODO:' . $redis->zlexcount($key, '[40', '[60') . "\r\n";//TODO::计算有序集合中指定字典区间内成员数量                   /*6*/
        echo '后三名:' . implode('   ', $redis->zrange($key, 0, 2)) . "\r\n";                                               /*7*/
        echo '后三名带分数:' . json_encode($redis->zrange($key, 0, 2, ['withscores' => true])) . "\r\n";                          /*7*/
        echo '前三名:' . implode('   ', $redis->zrevrange($key, 0, 2)) . "\r\n";                                            /*15*/
        echo '前三名(带分数):' . json_encode($redis->zrevrange($key, 0, 2, ['withscores' => true])) . "\r\n";                     /*15*/
        echo '80-100分的学生:' . json_encode($redis->zrangebyscore($key, '(84', 100)) . "\r\n";//带括号为开区间:84 < a <= 100       /*9*/
        echo '80-100分的学生(带分数):' . json_encode($redis->zrangebyscore($key, '(84', 100, ['withscores' => true])) . "\r\n";    /*9*/
        echo '正序索引:' . $redis->zrank($key, $student) . "\r\n";//索引                                                                     /*10*/
        echo '倒序索引:' . $redis->zrevrank($key, $student) . "\r\n";//索引                                                                  /*17*/
//      echo '删除学生:' . $redis->zrem($key, ['student_' . 1, 'student_' . 2]) . "\r\n";                                                    /*11*/
//      echo '删除排名区间:' . $redis->zremrangebyrank($key, 0, 0) . "\r\n";                                                                  /*13*/
//      echo '删除分数区间:' . $redis->zremrangebyscore($key, 80, 100) . "\r\n";                                                              /*14*/
        echo '80-100分的学生:' . json_encode($redis->zrevrangebyscore($key, 100, 80)) . "\r\n";                                     /*16*/
        echo '80-100分的学生(带分数):' . json_encode($redis->zrevrangebyscore($key, 100, 80, ['withscores' => true])) . "\r\n";      /*16*/
        echo '学生分数:' . $redis->zscore($key, $student) . "\r\n";//某人多少分                                                                 /*18*/
        //并集:默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和(sum|min|max)
        echo '并集:' . $redis->zunionstore('student_score_final', [$key, $key2]) . "\r\n";                                          /*19*/
        var_dump($redis->zscan($key, 0,['match' => 'stu*']));                                                                            /*20*/

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值