使用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的設置使用函數名加參數的方式可以保證不重復。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM