欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

thinkphp5?操作redis?實現(xiàn)文章的熱度排行和點贊排行的示例

 更新時間:2022年04月02日 10:50:26   作者:seaiio  
本文主要介紹了thinkphp5?操作redis?實現(xiàn)文章的熱度排行和點贊排行的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

使用redis hash散列 和zset有序集合實現(xiàn)文章的熱度排行和點贊排行 1.首先為文章建立散列,存入基本信息。 mysql簡單設(shè)計

獲取所有文章,并存入redis

//所有新聞頁
public function news()
{
    $redis = new Redis();
    $list  = News::select();
    foreach ($list as &$row){
        //將所有數(shù)據(jù)存到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);//返回給前端所有數(shù)據(jù);
}

2.初始化所有文章的瀏覽數(shù)和點贊數(shù)

 //初始化文章熱度和點贊數(shù)
public function startNews()
{
    $redis= new Redis();
    $list = News::select();
    foreach ($list as &$row){
        //為每個文章添加熱度
        $redis->zAdd('hot','0','newsId-'.$row->id);
        //為每個文章添加點贊數(shù)
        $redis->zAdd('good','0','newsId-'.$row->id);
    }
    dump($redis->zRange('hot','0','-1',true));
    dump($redis->zRange('good','0','-1',true));
}

結(jié)果

array(5) {
  ["newsId1"] => float(0)
  ["newsId2"] => float(0)
  ["newsId3"] => float(0)
  ["newsId4"] => float(0)
  ["newsId5"] => float(0)
}
array(5) {
  ["newsId1"] => float(0)
  ["newsId2"] => float(0)
  ["newsId3"] => float(0)
  ["newsId4"] => float(0)
  ["newsId5"] => float(0)
}

3.訪問新聞 訪問新聞時,mysql正常讀取信息返回給前端,(此處不做代碼實現(xiàn))。然后熱度排行自動增長1.

 	$redis   = new Redis();
    $param   = $this->request->param();
    $news_id = $param['news_id'];
    $list    = News::where('id',$news_id)->find();//數(shù)據(jù)庫查到的信息,返回給前端
    $redis->zIncRby('hot','1','newsId-'.$news_id);//redis數(shù)據(jù)增長1
    return json($list);

4.點贊新聞

public function newsGoods()
{
    $redis   = new Redis();
    $param   = $this->request->param();
    $news_id = $param['news_id'];
    $redis->zIncRby('good','1','newsId-'.$news_id);//redis數(shù)據(jù)增長1
}

這時候基本業(yè)務(wù)代碼已經(jīng)完事。然后開始查看排行。首先測試查看一下熱度排行和點贊排行的文章。

 dump($redis->zRange('hot','0','-1',true));//查看熱度排行
 dump($redis->zRange('good','0','-1',true));//查看點贊排行

結(jié)果

熱度
array(5) {
  ["newsId-3"] => float(2)
  ["newsId-4"] => float(4)
  ["newsId-1"] => float(6)
  ["newsId-2"] => float(9)
  ["newsId-5"] => float(16)
}
點贊
array(5) {
  ["newsId-1"] => float(3)
  ["newsId-2"] => float(8)
  ["newsId-3"] => float(10)
  ["newsId-4"] => float(14)
  ["newsId-5"] => float(48)
}

5.查看熱度排行榜(包括新聞簡介)注:可能有一種情況發(fā)生,文章id存在于排行榜中,但是對應(yīng)文章的簡介不在內(nèi)存中,那就需要去數(shù)據(jù)庫重新查此id文章的內(nèi)容(我已經(jīng)刪除了newsId-2的簡介)

//訪問熱度排行
public function newsHot()
{
    $redis   = new Redis();
    $rank    = $redis->handler()->zrevrange('hot','0','2');
    foreach ( $rank as &$row ){
        $id  = $row;
        $row = $redis->hGetAll($row);//去hash散列里取得之前存好的文章簡介
        if(!$row){
            //緩存里沒有該信息,去數(shù)據(jù)庫查找
            $id = trim($id,'newsId-');//切割字符串。獲得文章id
            $row = Db::name('news')->where('id',$id)->find();
        }
    }
    dump($rank);
}

結(jié)果

    array(3) {
  [0] => array(4) {
    ["title"] => string(15) "第五個文章"
    ["name"] => string(7) "作者5"
    ["create_time"] => string(19) "2019-11-28 14:33:43"
    ["id"] => string(1) "5"
  }
  [1] => array(7) {
    ["id"] => int(2)
    ["title"] => string(15) "第二個文章"
    ["name"] => string(7) "作者2"
    ["detail"] => string(8) "詳情22"
    ["create_time"] => string(19) "2019-11-28 14:33:43"
    ["hot"] => int(0)
    ["good"] => int(0)
  }
  [2] => &array(4) {
    ["title"] => string(7) "文章1"
    ["name"] => string(6) "作者"
    ["create_time"] => string(19) "2019-11-28 14:33:43"
    ["id"] => string(1) "1"
  }
}

其中第二個文章在redis內(nèi)存中不存在,重新再數(shù)據(jù)庫中查到的數(shù)據(jù)

6.查看點贊排行榜(包括新聞簡介)

//點贊熱度排行
public function newsGood()
{
    $redis   = new Redis();
    $rank = $redis->handler()->zrevrange('good','0','2');
    foreach ($rank as &$row){
        $id  = $row;
        $row = $redis->hGetAll($row);//去hash散列里取得之前存好的文章簡介
        if(!$row){
            //緩存里沒有該信息,去數(shù)據(jù)庫查找
            $id = trim($id,'newsId-');//切割字符串。獲得文章id
            $row = Db::name('news')->where('id',$id)->find();
        }
    }
    dump($rank);
}

結(jié)果:

array(3) {
  [0] => array(4) {
    ["title"] => string(15) "第五個文章"
    ["name"] => string(7) "作者5"
    ["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"
  }

}

到此這篇關(guān)于thinkphp5 操作redis 實現(xiàn)文章的熱度排行和點贊排行的示例的文章就介紹到這了,更多相關(guān)thinkphp5 熱度排行和點贊排行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Yii實現(xiàn)自動加載類地圖的方法

    Yii實現(xiàn)自動加載類地圖的方法

    這篇文章主要介紹了Yii實現(xiàn)自動加載類地圖的方法,涉及Yii加載類的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • phpstudy2020搭建站點的實現(xiàn)示例

    phpstudy2020搭建站點的實現(xiàn)示例

    這篇文章主要介紹了phpstudy2020搭建站點的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 如何在CentOS中安裝PHP7.4的方法步驟

    如何在CentOS中安裝PHP7.4的方法步驟

    這篇文章主要介紹了如何在CentOS中安裝PHP7.4的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • php檢測圖片木馬多進制編程實踐

    php檢測圖片木馬多進制編程實踐

    有制作圖片木馬的教程,并沒有找到檢測的程序,從制作原理來分析這種木馬程序,寫了以下這個上傳類與大家分享下,感性的朋友可以參考下
    2013-04-04
  • laravel實現(xiàn)前后臺路由分離的方法

    laravel實現(xiàn)前后臺路由分離的方法

    今天小編就為大家分享一篇laravel實現(xiàn)前后臺路由分離的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • php類

    php類

    php類...
    2006-11-11
  • 實例分析PHP將字符串轉(zhuǎn)換成數(shù)字的方法

    實例分析PHP將字符串轉(zhuǎn)換成數(shù)字的方法

    在本篇文章里我們給大家分享的是關(guān)于PHP將字符串轉(zhuǎn)換成數(shù)字的方法和相關(guān)知識點,有興趣的朋友們學(xué)習(xí)下。
    2019-01-01
  • PHP+Mysql+jQuery實現(xiàn)發(fā)布微博程序 php篇

    PHP+Mysql+jQuery實現(xiàn)發(fā)布微博程序 php篇

    這篇文章主要介紹了PHP+Mysql+jQuery實現(xiàn)發(fā)布微博程序,重要介紹后臺是如何處理前臺提交的數(shù)據(jù),并返回結(jié)果的,需要的朋友可以參考下
    2015-10-10
  • Laravel實現(xiàn)搜索的時候分頁并攜帶參數(shù)

    Laravel實現(xiàn)搜索的時候分頁并攜帶參數(shù)

    今天小編就為大家分享一篇Laravel實現(xiàn)搜索的時候分頁并攜帶參數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • PHP讀書筆記整理_結(jié)構(gòu)語句詳解

    PHP讀書筆記整理_結(jié)構(gòu)語句詳解

    下面小編就為大家?guī)硪黄狿HP讀書筆記整理_結(jié)構(gòu)語句詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07

最新評論