使用redis hash散列 和zset有序集合实现文章的热度排行和点赞排行 1.首先为文章建立散列,存入基本信息。 mysql简单设计

获取所有文章,并存入redis
//所有新闻页public function news(){ $redis = new Redis(); $list = News::select(); foreach ($list as &$row){ //将所有数据存到hash散列里,用于显示简介信息 $redis->handler()->hmset('newsId-'.$row->id,array('id'=>$row->id,'title'=>$row->title,'name'=>$row->name,'create_time'=>$row->create_time)); } return json($list);//返回给前端所有数据;}2.初始化所有文章的浏览数和点赞数
//初始化文章热度和点赞数public function startNews(){ $redis= new Redis(); $list = News::select(); foreach ($list as &$row){ //为每个文章添加热度 $redis->zAdd('hot','0','newsId-'.$row->id); //为每个文章添加点赞数 $redis->zAdd('good','0','newsId-'.$row->id); } dump($redis->zRange('hot','0','-1',true)); dump($redis->zRange('good','0','-1',true));}结果
$row = Db::name('news')->where('id',$id)->find(); } } dump($rank);}结果:
array(3) {
[0] => array(4) {
["title"] => string(15) "第五个文章"
["name"] => string(7) "作者5"
["www.easck.com;create_time"] => string(19) "2019-11-28 14:33:43"
["id"] => string(1) "5"
}
[1] => array(4) {
["title"] => string(15) "第四个文章"
["name"] => string(7) "作者4"
["create_time"] => string(19) "2019-11-28 14:33:43"
["id"] => string(1) "4"
}
[2] => &array(4) {
["title"] => string(15) "第三个文章"
["name"] => string(7) "作者3"
["create_time"] => string(19) "2019-11-28 14:33:43"
["id"] => string(1) "3"
}}







