redis实现分页

实现方式

  1. 使用有序集合zadd
  2. 使用hash存储具体的数据
  3. 取数据通过有序集合的zrevrange—倒叙 zrange—正序

代码案例

比如,现在我们要对新闻表news做查询分页,我们按照新闻添加时间add_time正序或者倒叙排列

// 添加数据
// $redis redis实例 不多说
// $add_time 文章添加时间
// $id 文章id
// $news 文章内容
// 如果想根据文章id排序,第二个参数也用$id即可
$redis->zAdd('news', $add_time, $id);
$redis->hMset('news:id:' . $id , $news);


// 分页处理
// $page 页码
// $pageNumber 一页展示条数

$start = ($page - 1) * $pageNumber;
$end = $start + $pageNumber -1;
$data = $redis->zRange('news', $start, $end);//zRevRange
$total = $redis->zCard('news');// 总条数
$list = array();
foreach($data as $key => $value){
        $list[] = $redis->hgetall('news:id:' . $value);// 每条新闻具体数据
}
$result['total'] = $total;
$result['list'] = $pageList;
$result['pageNumber'] = $pageNumber;
$result['page'] = $page;

你可能感兴趣的:(redis)