<?php
/**
* 按指定页码查找列表(按页码分页)
* @param string $key_list redis KEY
* @param int $page 指定的页码
* @param int $pagesize 查找数量
* @param string $order 排序规则 desc:倒序 asc:升序
* @return array
*/
public static function forum_redis_get_sort_sets_list_v1($key_list, $page, $pagesize = 10, $order='desc')
{
$listlen = self::Redis()->executeCommand('ZCARD',[$key_list]);
$page = $page>1 ? $page : 1 ;
//注:正序读取时第一页起始位置是$start=0 倒序读取时第一页起始位置是$start=-1
$start = intval(($page-1)*$pagesize+1);
$end = intval(($page-1)*$pagesize + $pagesize);
//是否有下一页 默认1(有下一页)
$status = 1;
//最后一页
$start = -$start;
$end = -$listlen;
$id_list = self::Redis()->executeCommand('ZRANGE',[$key_list, $end,$start]);
$status = 0;
}else{
$start = -$start;
$end = -$end;
$id_list = self::Redis()->executeCommand('ZRANGE',[$key_list, $end, $start]);
}
$id_list = array_reverse($id_list);
//最后一页
//$start = $start;
$end = $listlen;
$id_list = self::Redis()->executeCommand('ZRANGE',[$key_list,$start, $end]);
$status = 0;
}else{
//正序读取 $start 从0开始
$start = 0;
$id_list = self::Redis()->executeCommand('ZRANGE',[$key_list,$start, $end]);
}
}
return ['list' => $id_list, 'status' => $status, 'total' => $listlen];
}
/**
* 按指定页码查找列表(按页码分页)
* @param string $key_list redis KEY
* @param int $page 指定的页码
* @param int $pagesize 查找数量
* @param string $order 排序规则 desc:倒序 asc:升序
* @return array
*/
public static function forum_redis_get_sort_sets_list_v1($key_list, $page, $pagesize = 10, $order='desc')
{
$listlen = self::Redis()->executeCommand('ZCARD',[$key_list]);
$page = $page>1 ? $page : 1 ;
//注:正序读取时第一页起始位置是$start=0 倒序读取时第一页起始位置是$start=-1
$start = intval(($page-1)*$pagesize+1);
$end = intval(($page-1)*$pagesize + $pagesize);
//是否有下一页 默认1(有下一页)
$status = 1;
if ($order=='desc'){
//倒序
//最后一页
$start = -$start;
$end = -$listlen;
$id_list = self::Redis()->executeCommand('ZRANGE',[$key_list, $end,$start]);
$status = 0;
}else{
$start = -$start;
$end = -$end;
$id_list = self::Redis()->executeCommand('ZRANGE',[$key_list, $end, $start]);
}
$id_list = array_reverse($id_list);
}else{
//正序
//最后一页
//$start = $start;
$end = $listlen;
$id_list = self::Redis()->executeCommand('ZRANGE',[$key_list,$start, $end]);
$status = 0;
}else{
//正序读取 $start 从0开始
$start = 0;
$id_list = self::Redis()->executeCommand('ZRANGE',[$key_list,$start, $end]);
}
}
return ['list' => $id_list, 'status' => $status, 'total' => $listlen];
}