背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理

环境: VMware虚拟机  内存:1G   硬盘:60G  php环境:PHP Version 5.6.31  php框架:TP

测试:事先在redis里面插入了30W条数据,分别模拟php单进程和多进程(3个多进程)

php单进程代码:

public function sinsert() {
        //$redis = new Redis();  
        //$redis->connect('127.0.0.1', 6379);
        //写到list类型缓存里面
        //lpush('zc_hk_list', serialize($zc_hk))
        //$accountRepayModel = D('AccountRepay');
        $this->repay->start();
        for($i=1;$i<=300000;$i++) {
          $arr = array("k"=>$i,"v"=>"dan".$i);
          //var_dump($arr);//exit;         
            $this->redis->lpush('hongniu', serialize($arr));
        }
        $this->repay->stop();
        $spent_time = $this->repay->spent($echo=true, '全量写入redis数据发送脚本');
        $this->repay->clear();
        /*$key = 'name';
        $value = $redis->get($key);
        var_dump($value);*/
    }
    public function slist() {
        $this->repay->start();
        $list_len  = $this->redis->llen('hongniu');
        Log::write('单进程一共有:'.$list_len."条");

if ($list_len == 0) return;
        while (true) {
            //$result     = $this->redis->rpop('hongniu');
            $result     = $this->redis->lpop('hongniu');
            if(empty($result)) {break;}
            $repayment_data= unserialize($result);
            if(is_array($repayment_data) && !empty($repayment_data)) {
             //Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
             Log::write('单进程写日志的结果是:'.json_encode($repayment_data));
            }
        }
        $this->repay->stop();
        $spent_time = $this->repay->spent($echo=true, '单进程导出redis数据脚本');
        $this->repay->clear();
    }

php多进程代码

public function binsert() {
        //$redis = new Redis();  
        //$redis->connect('127.0.0.1', 6379);
        //写到list类型缓存里面
        //lpush('zc_hk_list', serialize($zc_hk))
        //$accountRepayModel = D('AccountRepay');
        $this->repay->start();
        for($i=1;$i<=300000;$i++) {
          $arr = array("k"=>$i,"v"=>"dan".$i);
          //var_dump($arr);//exit;
          if($i%3==0) {
            $this->redis->select(0);
            $this->redis->lpush('hongniu0', serialize($arr));
          }elseif($i%3==1) {
            $this->redis->select(1);
            $this->redis->lpush('hongniu1', serialize($arr));
          }else{
            $this->redis->select(2);
            $this->redis->lpush('hongniu2', serialize($arr));
          }
        }
        $this->repay->stop();
        $spent_time = $this->repay->spent($echo=true, '全量分别写入不同redis数据发送脚本');
        $this->repay->clear();
        /*$key = 'name';
        $value = $redis->get($key);
        var_dump($value);*/
    }
    public function blist1() {
        $this->repay->start();
        $this->redis->select(0);
        $list_len  = $this->redis->llen('hongniu0');
        Log::write('多进程一一共有:'.$list_len."条");
     
        if ($list_len == 0) return;
        
        while (true) {
            //$result     = $this->redis->rpop('hongniu');
            $result     = $this->redis->lpop('hongniu0');
            if(empty($result)) {break;}
            $repayment_data= unserialize($result);
            if(is_array($repayment_data) && !empty($repayment_data)) {
             //Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
              Log::write('多进程写日志的结果是1:'.json_encode($repayment_data), Log::INFO, Log::FILE, LOG_PATH.'blist1_'.date('Ymd').'.log');
            }
        }
        $this->repay->stop();
        $spent_time = $this->repay->spent($echo=true, '多进程导出redis数据脚本1');
        $this->repay->clear();
    }  
    public function blist2() {

$this->repay->start();
        $this->redis->select(1);
        $list_len  = $this->redis->llen('hongniu1');
        Log::write('多进程二一共有:'.$list_len."条");
        if ($list_len == 0) return;
        
        while (true) {
            //$result     = $this->redis->rpop('hongniu');
            $result     = $this->redis->lpop('hongniu1');
            if(empty($result)) {break;}
            $repayment_data= unserialize($result);
            if(is_array($repayment_data) && !empty($repayment_data)) {
             //Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
              Log::write('多进程写日志的结果是2:'.json_encode($repayment_data), Log::INFO, Log::FILE, LOG_PATH.'blist2_'.date('Ymd').'.log');
            }
        }
        $this->repay->stop();
        $spent_time = $this->repay->spent($echo=true, '多进程导出redis数据脚本2');
        $this->repay->clear();
    }  
    public function blist3() {
        $this->repay->start();
        $this->redis->select(2);
        $list_len  = $this->redis->llen('hongniu2');
        Log::write('多进程三一共有:'.$list_len."条");
        if ($list_len == 0) return;
        
        while (true) {
            //$result     = $this->redis->rpop('hongniu');
            $result     = $this->redis->lpop('hongniu2');
            if(empty($result)) {break;}
            $repayment_data= unserialize($result);
            if(is_array($repayment_data) && !empty($repayment_data)) {
             //Log::write('多进程写日志的结果是1:'.json_encode($repayment_data));
              Log::write('多进程写日志的结果是3:'.json_encode($repayment_data), Log::INFO, Log::FILE, LOG_PATH.'blist3_'.date('Ymd').'.log');
            }
        }
        $this->repay->stop();
        $spent_time = $this->repay->spent($echo=true, '多进程导出redis数据脚本3');
        $this->repay->clear();
    }

测试结果如下所示:

shell模拟php多进程从redis获取数据(多个库)相关推荐

  1. shell模拟php多进程从redis获取数据(多个redis实例)

    背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机  内存:1G   硬盘:60G  ...

  2. shell模拟php多进程从redis获取数据(一个库多个key值)

    背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机  内存:1G   硬盘:60G  ...

  3. shell模拟php多进程从redis获取数据

    背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机  内存:1G   硬盘:60G  ...

  4. python爬虫-14-python获取数据之BeautifulSoup4库(下)

    这里我们主要梳理下思路,整理下和BeautifulSoup有关的内容. 1.find和find_all 相同点 在提取数据的时候,第一个参数是标签的名字,如果后面还想有其他参数作为过滤的方式而存在,可 ...

  5. echarts模拟从数据库异步加载数据

    前言 前面的几篇小例子中,echarts数据都是写死在js中的,但是在实际echarts中,数据都是从数据库中动态获取过来.所以这里来简单演示一下echarts怎么通过ajax异步获取数据库中的数据在 ...

  6. SpringBoot整合redis(StringRedisTemplate),操作一个redis服务器的多个库

    介绍 在SpringBoot中一般使用RedisTemplate提供的方法来操作Redis SpringBoot 2.x后 ,原来底层使用的 Jedis 被 lettuce[赖忒死] 替换.所以在sp ...

  7. 使用进程池模拟多进程爬取url获取数据,使用进程绑定的回调函数去处理数据...

    1 # 使用requests请求网页,爬取网页的内容 2 3 # 模拟使用进程池模拟多进程爬取网页获取数据,使用进程绑定的回调函数去处理数据 4 5 import requests 6 from mu ...

  8. Impala介绍,Impala架构,Impala安装,impala Shell ,分区创建,refresh,load数据,获取数据的元数据

    1 Impala Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBASE中的PB级大数据.已有的Hive系统虽然也提供了SQL语义, ...

  9. I.MX6 Android Linux shell MMPF0100 i2c 获取数据

    #!/system/bin/busybox ash# # I.MX6 Android Linux shell MMPF0100 i2c 获取数据 # 说明: # 本文主要记录通过shell脚本来获取M ...

最新文章

  1. 根据文件属性或权限进行find查找
  2. 数据仓库--基本概念
  3. 4 谐波_技术文章—功率分析仪在IEC谐波的测试应用
  4. 端口号被占用时,查找占用该端口号的进程并释放端口号
  5. ROS:使用ubuntuKylin17.04安装ROS赤xi龟
  6. ajax mysql点赞_php+mysql结合Ajax实现点赞功能完整实例
  7. WordPress主题 WebStack导航主题
  8. 阿里动物园再添新丁,小蛮驴搞定物流最后三公里!
  9. 麦克纳姆轮全向移动机器人运动模型规律分析
  10. 数据结构37:线索二叉树的创建
  11. 使用ExtJs实现文件下载
  12. mysql MyISAM和InnoDB
  13. 设计模式 六大法则
  14. 静态路由配置(目的下一跳)
  15. Spring中的用到的设计模式
  16. OSU双足步行机器人 Cassie利用强化学习站立的源码实现
  17. 【实战技能】不做绑架公司的技术团队成员
  18. 弱引用(WeakReference)初识
  19. java基于ssm开发的多商家书店商城系统
  20. js计算两个日期时间的差值

热门文章

  1. linux制作openssl rpm,CentOS 7 定制 OpenSSL RPM 包
  2. Android底层隐私数据,Android Intent传递数据底层分析详细介绍_Android_脚本之家
  3. Kettle使用_19 HTTP Client与XML JavaSript解析
  4. lisp求面与面的差集_AcGeVector3d是点阵的集合,通过等分点的差集得到。 新的点可以通过点与点阵相差得......
  5. 编程语言之类型之间转换
  6. 登录验证---过滤器(Fileter)
  7. C语言中指针定义的时候初始化的必要性
  8. 全新释放 | RealSight APM, 让客户的极致数字体验成为可能
  9. 如何通俗易懂地向别人解释React生命周期方法?
  10. 0110-如何给Kerberos环境下的CDH集群添加Gateway节点