zoukankan      html  css  js  c++  java
  • PHP下使用Redis消息队列发布微博(复制)

      phpRedisAdmin :github地址  图形化管理界面

    git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git
    cd phpRedisAdmin
    git clone https://github.com/nrk/predis.git vendor

    首先安装上述的Redis图形化管理界面,能够方便的管理Redis数据

    为了降低Mysql的并发数,先把用户的微博存在Redis中

    假设用户发布的时候需要三个字段,uid(用户ID号),username(用户姓名),content('用户的评论')

    比如用户传递以下信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    //此处需要安装phpredis
    $redis new Redis();
    $redis->connect('127.0.0.1', 6379);
            //    连接redis
    $web_infoarray(
    'uid' => '123456',
    'username' => '123',
    'content' =>'123'
    );
    //将数组转成json来存储
    $list = json_encode($web_info);
    //lpush向KEY对应的头部添加一个字符串元素
    $redis->lpush('weibo_lists',$list);
    $redis->close();
    ///var_dump(json_encode($web_info));
    var_dump($list);
    ?>

    此处可以看到我们的redis已经有数据了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    //创建一个PDO数据库链接  data.php
    <?php
     
    class qq{
     
     
     
    public function post($uid='',$username='',$content=''){
        try{
     
     
                $dsn "mysql:host;dbname=localhost;dbname=test";
                $db new PDO($dsn,'root','root');  
                            $db->exec("SET NAMES UTF8");
                $sql ="insert into test(uid,username,content)values('$uid','$username','$content')";
    $db->exec($sql);
        }catch(PDOException $e){
        $e->getMessage();
    }
     
                 
        }
      
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    //处理redis数据库的数据 并把数据放到MYSQL数据库中
    <?php
    include "data.php";
    $qq new qq();
    $redis new Redis();
    $redis->connect('127.0.0.1', 6379);
     
     
                //返回的列表的大小。如果列表不存在或为空,该命令返回0。如果该键不是列表,该命令返回FALSE
        if($redis -> lsize('weibo_lists')){
        //从LIST头部删除并返回删除数据
            $info $redis->rpop('weibo_lists');
            $info = json_decode($info);
            $qq->post($info->uid,$info->username,$info->content);
        }
    $redis->close();
     
    var_dump($info);
     
     
     
    ?>

    我们能看到数据库已经有数据了

  • 相关阅读:
    问题 I: 夫子云游
    问题 H: 小k的简单问题
    问题 G: 圆桌上的晚餐
    问题 F: 超超的自闭意思
    promise与aysnc 与EventProxy
    node的实践(项目三)
    node的实践(项目二)
    node不懂的方法的使用
    github
    node的实践(项目一)
  • 原文地址:https://www.cnblogs.com/agang-php/p/5358186.html
Copyright © 2011-2022 走看看