实现方式
- 使用有序集合zadd
- 使用hash存储具体的数据
- 取数据通过有序集合的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;