redis 分页

/*
     * 添加redis记录
     * @param $hash_prefix 前缀
     * @param $id 记录id
     * @param $data 数据
     * @return bool 返回值
     */
    static function set_redis_page_info($hash_prefix,$id,$data){
        if(!is_numeric($id) || !is_array($data)) return false;
        $hashName = $hash_prefix.'_'.$id;
        Redis::hmset($hashName, $data);
        Redis::expire($hashName, 900);
        Redis::zadd($hash_prefix.'_sort',$id,$id);
        Redis::expire($hash_prefix.'_sort', 900);
        return true;
    }
/*
     * 获取redis分页数据
     * @param $hash_prefix 前缀
     * @param $page 当前页数
     * @param $pageSize 每页多少条
     * @param $key 字段数组 不传为取出全部字段
     * @return array
     */
    static function get_redis_page_info($hash_prefix,$page,$pageSize,$key=array()){
        if(!is_numeric($page) || !is_numeric($pageSize)) return false;
        $limit_s = ($page-1) * $pageSize;
        $limit_e = ($limit_s + $pageSize) - 1;
        $range = Redis::zrange($hash_prefix.'_sort',$limit_s,$limit_e);
        $count = Redis::zcard($hash_prefix.'_sort');
        $pageCount = ceil($count/$pageSize);
        $pageList = array();
        foreach($range as $qid){
            if(count($key) > 0){
                $pageList[] = Redis::hmget($hash_prefix.'_'.$qid,$key); 
            }else{
                $pageList[] = Redis::hgetall($hash_prefix.'_'.$qid);
            }
        }
        $data = array(
            'data'=>$pageList,
            'pageInfo'=>array(
                'page'=>$page, //当前页数
                'pageSize'=>$pageSize, //每页多少条
                'count'=>$count, //记录总数
                'pageCount'=>$pageCount //总页数
            )
        );
        return $data;
    }

小提示

如有侵权请邮件通知