// 往redis插入數據
public function redispage_add($id,$data){
$instance = Redis::instance();
$hash_prefix = "test";
if(!is_numeric($id) || !is_array($data)) return false;
$hashName = $hash_prefix.'_'.$id;
$instance->hMset($hashName, $data);
$instance->zAdd($hash_prefix. '_sort', $id, $id);
return true;
}
// 讀取redis分頁數據
public function redispage_list($page, $pageSize, $key = [])
{
$instance = Redis::instance();
$hash_prefix = "test";
if (!is_numeric($page) || !is_numeric($pageSize)) return false;
$limit_s = ($page - 1) * $pageSize;
$limit_e = ($limit_s + $pageSize) - 1;
$range = $instance->zRange($hash_prefix . '_sort', $limit_s, $limit_e); //指定區間內,帶有 score 值(可選)的有序集成員的列表。
$count = $instance->zCard($hash_prefix . '_sort'); //統計ScoreSet總數
$pageCount = ceil($count / $pageSize); //總共多少頁
$pageList = array();
foreach ($range as $qid) {
if (count($key) > 0) {
$pageList[] = $instance->hMGet($hash_prefix . '_' . $qid, $key); //獲取hash表中所有的數據
} else {
$pageList[] = $instance->hGetAll($hash_prefix . '_' . $qid); //獲取hash表中所有的數據
}
}
$data['total'] = $count;
$data['page'] = $page;
$data['pagecount'] = $pageCount;
$data['list'] = $pageList;
return $data;
}
//db 查詢,不讀取總數
public function list_dbl()
{
$pageSize = 20;
$filed = 'id,title,positionid,positiontitle,experience,。。。字段省略 ....groupid';
$rs = db('job_recruit')->field($filed)->order('id asc')->limit(20)->select();
$data['list'] = $rs;
$this->returnSuccess($data);
}
// db查詢 讀取總數
public function list_db_with_total()
{
$pageSize = 20;
$filed = 'id,title,positionid,positiontitle,experience,。。。字段省略 ....groupid';
$rs = db('job_recruit')->field($filed)->order('id asc')->limit(20)->select();
$total = db('job_recruit')->count();
$data['total'] = $total;
$data['page'] = 1;
$data['pagecount'] = ceil($total / $pageSize);;
$data['list'] = $rs;
$this->returnSuccess($data);
}
// redis查詢
public function list_redis()
{
$rs = $this->redis_page_info(1, 20,[]);
$this->returnSuccess($rs);
}
jmeter 運行在我本機上,
HttpRequest接口放在遠程服務器上,遠程服務器爲單機架構。
設置1000次, 結果如下: