thinkphp5 操作redis 实现文章的热度排行和点赞排行的示例

2022-04-18 12:29:35

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

thinkphp5操作redis实现文章的热度排行和点赞排行的示例

获取所有文章,并存入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"
  }

}

相关文章 大家在看