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

转载于:https://www.cnblogs.com/godlei/p/6580905.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值