使用MYSQL+Redis完成分页读取功能
时间:2021-07-01 10:21:17
帮助过:12人阅读
function getAnchorByPopularity(
$page,
$pagesize){
//验证参数的正确性
if(!
is_numeric(
$page) || !
is_numeric(
$pagesize)){
throw new Exception(
__METHOD__ . "error param"
);
}
$page = (
$page > 0) ?
$page - 1 : 0
;
$pagesize = (
$pagesize > 0) ?
$pagesize : 20
;
$param =
func_get_args();
$redisKey = "autoapp_".
__METHOD__ .
implode("_",
$param);
$redisVal =
$this->redis->get(
$redisKey);
if(
$redisVal ===
false){
if (
$pagesize > 0
) {
$start =
$page *
$pagesize;
$order = "FPopularity desc"
;
$limit = "{
$start}, {
$pagesize}"
;
// $limit = "{0},{1}";
}
else {
$limit = ""
;
}
//从MySQL数据库读取数据
//如果读取数据不为空,把数据存入redis
if(!
empty(
$list)){
$this->redis->setex(
$redisKey,
$this->cacheTime,
$list);
}
}
else{
$list =
unserialize(
$redisVal);
}
return $list;
}
说明:
1.主要的逻辑就是先从redis中查找,如果不存在的话就在mysql中查找,并把找到的数据存入redis。
2.这里的一个技巧点是redis的key的设置使用函数名加参数的方式可以保证不重复。
使用MYSQL+Redis完成分页读取功能
标签:tar des his color blog == 参数 逻辑 数据库