使用MYSQL+Redis完成分页读取功能
2024-09-20 08:07:23
public 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的设置使用函数名加参数的方式可以保证不重复。
最新文章
- android ListView 九大重要属性详细分析、
- AppCan接入微信并且进行文字分享
- hive报lzo Premature EOF from inputStream错误
- 论XCODE工程里使用的宏定义.
- 网页播放amr格式文件
- 怎么样调试正在运行的exe?
- .NET中ToString()的用法
- ios--图片处理(修改、保存)UIGraphicsBeginImageContext
- 每天一个JS 小demo之商品筛选。主要知识点:DOM方法综合运用
- python学习之读写csv文件(使用pandas)
- 用Webstrom搭建Vue项目
- python+selenium九:ddt数据驱动
- 安装httpd服务配置
- 【AtCoder】ARC100 题解
- delphi连接mysql不用添加DSN(mysql connector odbc 5.1版)
- php中接收参数,不论是来自GET还是POST方法
- Spring源码解析 – @Configuration配置类及注解Bean的解析
- form表单序列化之后追加字段
- [AHOI2004]数字迷阵
- libnetwork 源码浅析