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

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

测试:事先在redis里面插入了60W条数据,分别模拟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<=600000;$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<=600000;$i++) {
          $arr = array("k"=>$i,"v"=>"dan".$i);
          //var_dump($arr);//exit;
          if($i%3==0) {
            $this->redis->lpush('hongniu0', serialize($arr));
          }elseif($i%3==1) {
            $this->redis->lpush('hongniu1', serialize($arr));
          }else{
            $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();
        $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();
        $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();
        $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文件(batch.sh)代码:

#!/bin/sh
for((i=3;i>=1;i--))
do
{
 curl http://192.168.32.128/index.php/Business/blist$i
}&
done

测试结果如下所示:

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

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

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

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

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

  3. shell模拟php多进程从redis获取数据(多个库)

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

  4. Salesforce 中获取数据表字段的 picklist 的值

    Salesforce 中获取数据表字段的 picklist 的值 cmStatus = new List<String>();Map<String, Schema.DescribeF ...

  5. 查询数据库表名,数据表信息,MySQL Key值(PRI, UNI, MUL)的含义

    数据表名: SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_SCHEMA ='v53' AND TABLE_TYPE =' ...

  6. vue知识点详解,Vue之v-prev、vue-virtual-scroll-list、alise、data动态添加数据、v-for中的key值等

    1.没有vue语法的v-prev 给模版中静态html添加该指令,表示不需要重复编译.(可以极大的加快编译速度) 2.vue-virtual-scroll-list虚拟插件,用于长列表,几十万的数据也 ...

  7. 获取url转义之后的后面key值

    1.例如 https://editor.csdn.net/md?not_checkout=1&articleId=111070909,获取not_checkout值: getUrlParame ...

  8. Thymeleaf+SpringMVC,在html中获取数据session、request参数的值

    Request参数 假设请求的url为:/user/get?id=12 1.访问参数id可以使用param前缀,例如:${param.id!=null}检查是否有参数id: 2.参数是一个数组,因为它 ...

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

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

最新文章

  1. 在ecshop顶部会员信息提示区显示会员等级
  2. VMware静态地址上网
  3. 资料收集新一代 Linux 文件系统 btrfs 简介
  4. python无需修改是什么特性_用户编写的python程序无需修改就可以在不同的平台运行,是python的什么特征...
  5. C语言实现珠排序bead sort算法(附完整源码)
  6. 00004-括号匹配问题-牛客网-要考虑各种情况
  7. 原生js获取document_原生JS常用API整理
  8. Spring Http Invoke 请求过程图
  9. bigdecimal 科学计数转普通计数_LoaRunner性能测试教程:Windows计数器(2)
  10. 取rtsp流数据_SDP在RTSP、国标GB28181、WebRTC中的实践
  11. fdisk硬盘分区(1)——系统盘剩余空间创建分区
  12. acer软件保护卡怎么解除_Acer软件保护卡
  13. Python之XML解析
  14. Cookie和Session的使用及其案例分析
  15. ue4/5玻璃材质制作(简单易懂上手)
  16. 安卓手机内存卡测试软件,安卓手机硬件检测软件
  17. GNSS/INS组合导航(2)-加速度计选型参数解析
  18. esp32 Flash分区与OTA功能简析
  19. linux i2c模型 rtc模型 详细分析,Linux RTC驱动分析(一)----pcf8563驱动和class.c
  20. SaaS 长河下,AfterShip 技术升级的“加减法”

热门文章

  1. ontouchevent android,android onTouchEvent处理机制总结(必看)
  2. springboot整合mysql5.7_每天五分钟写K8(四):SpringBoot与mysql整合
  3. 如何用Redlock实现分布式锁
  4. python连接各种数据库数据_Python连接各种数据库
  5. Dropout_layer.cpp(防止过拟合)
  6. SRAM(静态随机存储器)
  7. Springboot集成Shiro+Redis后,@Transactional注解不起作用
  8. 如何在Kali Linux中安装Google Chrome浏览器
  9. Javascript 深入学习循环
  10. Javascript基础系列之(五)条件语句(比较操作符)