// 往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次, 结果如下: