shell模拟php多进程从redis获取数据(一个库多个key值)
背景:现在的数据已经写到了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值)相关推荐
- shell模拟php多进程从redis获取数据(多个redis实例)
背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机 内存:1G 硬盘:60G ...
- shell模拟php多进程从redis获取数据
背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机 内存:1G 硬盘:60G ...
- shell模拟php多进程从redis获取数据(多个库)
背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机 内存:1G 硬盘:60G ...
- Salesforce 中获取数据表字段的 picklist 的值
Salesforce 中获取数据表字段的 picklist 的值 cmStatus = new List<String>();Map<String, Schema.DescribeF ...
- 查询数据库表名,数据表信息,MySQL Key值(PRI, UNI, MUL)的含义
数据表名: SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_SCHEMA ='v53' AND TABLE_TYPE =' ...
- vue知识点详解,Vue之v-prev、vue-virtual-scroll-list、alise、data动态添加数据、v-for中的key值等
1.没有vue语法的v-prev 给模版中静态html添加该指令,表示不需要重复编译.(可以极大的加快编译速度) 2.vue-virtual-scroll-list虚拟插件,用于长列表,几十万的数据也 ...
- 获取url转义之后的后面key值
1.例如 https://editor.csdn.net/md?not_checkout=1&articleId=111070909,获取not_checkout值: getUrlParame ...
- Thymeleaf+SpringMVC,在html中获取数据session、request参数的值
Request参数 假设请求的url为:/user/get?id=12 1.访问参数id可以使用param前缀,例如:${param.id!=null}检查是否有参数id: 2.参数是一个数组,因为它 ...
- echarts模拟从数据库异步加载数据
前言 前面的几篇小例子中,echarts数据都是写死在js中的,但是在实际echarts中,数据都是从数据库中动态获取过来.所以这里来简单演示一下echarts怎么通过ajax异步获取数据库中的数据在 ...
最新文章
- 在ecshop顶部会员信息提示区显示会员等级
- VMware静态地址上网
- 资料收集新一代 Linux 文件系统 btrfs 简介
- python无需修改是什么特性_用户编写的python程序无需修改就可以在不同的平台运行,是python的什么特征...
- C语言实现珠排序bead sort算法(附完整源码)
- 00004-括号匹配问题-牛客网-要考虑各种情况
- 原生js获取document_原生JS常用API整理
- Spring Http Invoke 请求过程图
- bigdecimal 科学计数转普通计数_LoaRunner性能测试教程:Windows计数器(2)
- 取rtsp流数据_SDP在RTSP、国标GB28181、WebRTC中的实践
- fdisk硬盘分区(1)——系统盘剩余空间创建分区
- acer软件保护卡怎么解除_Acer软件保护卡
- Python之XML解析
- Cookie和Session的使用及其案例分析
- ue4/5玻璃材质制作(简单易懂上手)
- 安卓手机内存卡测试软件,安卓手机硬件检测软件
- GNSS/INS组合导航(2)-加速度计选型参数解析
- esp32 Flash分区与OTA功能简析
- linux i2c模型 rtc模型 详细分析,Linux RTC驱动分析(一)----pcf8563驱动和class.c
- SaaS 长河下,AfterShip 技术升级的“加减法”
热门文章
- ontouchevent android,android onTouchEvent处理机制总结(必看)
- springboot整合mysql5.7_每天五分钟写K8(四):SpringBoot与mysql整合
- 如何用Redlock实现分布式锁
- python连接各种数据库数据_Python连接各种数据库
- Dropout_layer.cpp(防止过拟合)
- SRAM(静态随机存储器)
- Springboot集成Shiro+Redis后,@Transactional注解不起作用
- 如何在Kali Linux中安装Google Chrome浏览器
- Javascript 深入学习循环
- Javascript基础系列之(五)条件语句(比较操作符)