zoukankan      html  css  js  c++  java
  • redis高并发处理例子

    发帖、发微博、点赞、评论等这些操作很频繁的动作如果并发量小,直接入库是最简单的
    但是并发量一大,数据库肯定扛不住,这时可采取延迟发布:先将发布动作保存在队列里,后台进程循环获取再入库

    模拟发布微博先进入redis队列

    weibo_redis.php

    <?php
    //此处需要安装phpredis扩展
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    $redis->auth("php001");
    //连接redis
    $web_info= array(
    'uid' => $_REQUEST[uid], //发布者id
    'username' => $_REQUEST[username],//发布者用户名
    'content' =>$_REQUEST[content],//微博内容
    );


    //将数组转成json来存储
    $list = json_encode($web_info);
    //lpush向KEY对应的头部添加一个字符串元素
    $redis->lpush('weibo_lists',$list);
    $redis->close();
    var_dump($list);
    ?>

    模拟后台进程从redis队列获取微博

    Pdodb.class.php
    <?php
    class Pdodb{
    public function post($uid='',$username='',$content=''){
    try{
    $dsn = "mysql:localhost;dbname=localhost;dbname=big";
    $db = new PDO($dsn,'big','123456');
    $db->exec("SET NAMES UTF8");
    $sql ="insert into ih_weibo(uid,username,content)values('$uid','$username','$content')";
    //echo $sql;
    $db->exec($sql);
    }catch(PDOException $e){
    echo $e->getMessage();
    }
    }
    }


    weibo_mysql.php

    <?php
    require_once 'Pdodb.class.php';
    set_time_limit(0); // 取消脚本运行时间的超时上限


    $pdo = new Pdodb();
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);


    while (true) {
    //返回的列表的大小。如果列表不存在或为空,该命令返回0。如果该键不是列表,该命令返回false
    if($redis -> lsize('weibo_lists')){
    //从LIST头部删除并返回删除数据
    $info = $redis->rpop('weibo_lists');
    $info = json_decode($info);
    $pdo->post($info->uid,$info->username,$info->content);
    }

    sleep(10);//延时10秒
    }
    $redis->close();

    后台执行weibo_mysql.php

    nohup php /var/www/html/big/weibo_mysql.php &
    ---------------------
    作者:爱代码也爱生活
    来源:CSDN
    原文:https://blog.csdn.net/nuli888/article/details/52443310
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    kotlin 通过 下标比对
    textarea元素调整
    jquery给两个标签绑定一个事件
    开发过程中遇到的错误
    response.setHeader各种用法详解
    如何在eclipse里删除一个类 然后SVN服务器也同时删了这个类
    @pathvariable 与@requestparam 写rest接口时遇到的
    $.getJSON
    easyUI学习
    jQuery validator addMethod 动态提示信息
  • 原文地址:https://www.cnblogs.com/sky-yu/p/6377290.html
Copyright © 2011-2022 走看看