zoukankan      html  css  js  c++  java
  • 使用MYSQL+Redis完成分页读取功能

    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的设置使用函数名加参数的方式可以保证不重复。

  • 相关阅读:
    为什么要财务自由
    2019小目标
    《小狗钱钱》后感
    从月光入门到迈出投资第一步
    tslint编译问题-内存溢出
    简单数组
    计算矩阵的乘积
    非数组求杨辉三角
    一维数组求杨辉三角
    二维数组求杨辉三角
  • 原文地址:https://www.cnblogs.com/godlei/p/6580905.html
Copyright © 2011-2022 走看看