为了账号安全,请及时绑定邮箱和手机立即绑定

PHP消息队列实现及应用

Wicon PHP开发工程师
难度中级
时长 1小时14分
学习人数
综合评分9.73
65人评价 查看评价
9.8 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • 队列
    查看全部
    0 采集 收起 来源:Redis

    2018-08-05

  • Redis类中list类型

    查看全部
    0 采集 收起 来源:Redis

    2018-08-02

  • 消息队列触发机制 死循环,不停扫描,有消息就处理 定时任务,
    查看全部
    0 采集 收起 来源:消息队列.mp4

    2018-08-01

  • ## RabbitMQ## RabbitMQ

    查看全部
    0 采集 收起 来源:RabbitMQ

    2018-07-15

  • # 流量削峰案例:Redis的list类型实现秒杀


    查看全部
    0 采集 收起 来源:Redis

    2018-07-15

  • 啊啊啊顶顶顶

    查看全部
  • 创建数据库表:

    https://img1.sycdn.imooc.com//5b3cd2ae0001fe0f05110144.jpg

    一、接收用户请求存入到redis的程序

    二、将redis的数据插入到数据库的程序



    查看全部

  • 秒杀:在同一时间会有巨大的访问量。

    Redis基于内存,速度较快,Mysql数据库则需要在硬盘中写入数据,速度慢。

    另外,数据库如果阻塞其他的业务也将受到影响。


    Redis是数据可持久化的,会周期性的将数据写入硬盘。不用担心断电。


    Redis提供五种数据类型:字符串、双向链表、哈希表、集合、有序集合。

    list类型是一个双向链表,支持头部和尾部插入元素。最多可支持40亿个元素。

    处理简单轻量的消息队列时非常有优势。

    https://img1.sycdn.imooc.com//5b3cd18a00017b5f05990357.jpg


    https://img1.sycdn.imooc.com//5b3cd1a40001875b05950333.jpg

    https://img1.sycdn.imooc.com//5b3cd1b7000143f306270333.jpg

    https://img1.sycdn.imooc.com//5b3cd1d00001805905690248.jpg

    查看全部
    0 采集 收起 来源:Redis

    2018-07-04

  • yum install php-bcmath php-mbstring php-0dom php-curl

    查看全部
    0 采集 收起 来源:RabbitMQ

    2018-07-01

  • <?php
    inlcude_onceA './include/db.php';
    $redis = new Redis();
    $resid->connect('127.0.0.1', 6379);
    $reds_name = 'miaosha';
    $db = DB::getInstance();
    //死循环
    while(1) {
     //从队列最左侧取出一个值来
     $user = $redis->lPop($redis_name);
     //然后判断这个值是否存在
     if (!$user || $user == 'nil') {
       sleep(2);
       continue;
     }
    //切割出时间, uid
    $user_arr = explode('%', $user);
    $insert_data = array(
        'uid' => $user_arr[0],
        'time_stamp' => $use_arr[1]]
    );
     
     //保存到数据库中
     $res = $db->insert('redis_queue', $insert_data);:
     //数据库插入失败时回滚
      if (!$res) {
          $redis->rPop($redis_name, $user);
      }
     }
     //释放redis
     $redis->close();
     
     
    }


    查看全部
  • </php
    //首先,加载一个Reids组件,
    $redis = new Redis();
    $resid->connect('127.0.0.1', 6379);
    $reds_name = 'miaosha';
    for ($i = 0;$i < 100;$i++) {
        $uid = rand(1000000, 9999999);
    }
    
    //接收用户的id,
    //$uid = $_GET['uid'];
    //获取redis里面已有的数量
    $num = 10;
    //如果当前人数少于10的时候,则加入这个队列
    if ($redis->lLen($resid_name) < 10) {
        $redis->rPush($redis_name . $uid . '%' . microtime());
        echo $uid . '秒杀成功';        
    }else{
        //如果当前人数已经达到10人,责任返回秒杀已完成
            echo '秒杀已结束';
    }
    $redis->close();


    查看全部
  • <?php
    include_once './include/db.php';
    if (!empty($_GET['mobile'])) {
        //这里首先应该是订单中心的处理流程
        //....... 
        //把用户get过来的数据进行过滤
        $order_id = rand(10000, 99999);
        //订单信息
        $insert_data = array(
            'order_id ' => $order_id,
            'mobile' => $_GET['mobile'],
            'created_at' => date('Y-m-d H:i:s'),
            'status' => 0,
        );
        //存储数据
        $db = DB::getInstance();
        $res = $db->insert('order_queue', $insert_data);
        if ($res) {
            echo $insert_data['id'] . '保存成功';
        } else {
            echo $insert_data['id'] . '保存失败';
        }
    }


    查看全部
    1 采集 收起 来源:.Mysql订单队列

    2018-06-30

  • 整体流程:接受用户订单,通过crontab进行配送处理

    弊端:如果用户量大,会导致配送时间紊乱(个人观点)

    查看全部
    0 采集 收起 来源:.Mysql订单队列

    2018-06-30

  • 消息队列的应用场景

    冗余

    解耦

    流量削峰

    异步通信

    扩展性

    排序保证

    查看全部
    0 采集 收起 来源:消息队列.mp4

    2018-06-30

  • RabbitMQ的官网是www.rabbitmq.com

    查看全部
    0 采集 收起 来源:RabbitMQ

    2018-06-27

举报

0/150
提交
取消
课程须知
1.掌握PHP基础知识 2.使用过Redis技术做缓存 3.有简单的Linux命令基础,如cd、sudo、apt、Vim
老师告诉你能学到什么?
1.队列是个什么东西,他能干什么 2.队列的应用场景有哪些 3.如何使用队列对业务进行解耦 4.如何使用Redis队列来消除高压力 5.专业的队列系统RabbitMQ如何来使用 课程所需库文件:http://pan.baidu.com/s/1bQg038

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!