shell模擬php多程序從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();
}
測試結果如下所示: