91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在php中使用redis實現一個文章發布系統

發布時間:2021-02-07 21:13:59 來源:億速云 閱讀:142 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關如何在php中使用redis實現一個文章發布系統,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

具體內容如下

  public function post_article($user){
    $VOTE_SCORE = 24;
    $redis = $this -> redis;
    $key= "queue";
    $ONE_WEEK_IN_SECONDS= 7*86400;
    $redis -> multi($key);
    //生成新的文章id
    $article_id = $redis -> incr("article:",$key);

    //文章已投票用戶名單
    $voted = "voted:".$article_id;
    $this->redis->sadd($voted,$user,$key);
    //設置過期時間(為1周)
    $this->redis->expipre($voted,$ONE_WEEK_IN_SECONDS,$key);

    //獲取現在的時間
    $now =time();
    $article = "article:".$article_id;
    $data = ['title'=>'測試1','link'=>'www.hahaha.com','poster'=>$user,'tine'=>$now,'votes'=>1];
    //$data = json_encode($data);
    $redis -> hmset($article,$data,$key);

    //將文章添加到根據時間排序有序集合和根據評分排序有序結合中
    $this -> redis -> zadd("score:",1,$article,$key);
    $this -> redis -> zadd("time:",$now,$article,$key);

    $redis -> exec($key);
  }
  public function article_vote(){
    $ONE_WEEK_IN_SECONDS= 7*86400;
    $article = "article:3";
    $user = "user:7777";

    $redis = $this -> redis;
    $key= "queue";
    $cutoff = time() - $ONE_WEEK_IN_SECONDS;
    //文章發布時間和投票截止日期對比
    if($redis->zscore('time:',$article,$key) < $cutoff){
      var_dump("該文章已過投票時間!");exit;
    }
    $article_id = explode(':',$article)['1'];
    if($redis->sadd('voted:'.$article_id,$user,$key)){
      $redis -> zincrby('score:',$article,1,$key);
      $redis -> hincrby($article,'votes',1,$key);
    }else{
      var_dump("您已經投過票了!");exit;
    }
  }
  public function get_articles($page =1,$orders =''){
    $redis = $this->redis;
    $db = "queue";
    //$orders = "time:";
    $per_page = 3;
    $start = ($page-1)*$per_page;
    $end = $start + $per_page -1;
    $ids = $redis -> zrevrange($orders,$start,$end,$db);
    foreach($ids as $key=>$val){
      $data = $redis -> hgetall($val,$db);
      $data['id'] = $val;
      $articles[] = $data;
    }
    return $articles;
  }
  public function add_remove_group($article_id,$to_add = [],$to_remove = []){
    $redis = $this->redis;
    $db = "queue";
    $article = "article:".$article_id;
    foreach($to_add as $key=>$val){
      $redis -> sadd('group:'.$val,$article,$db);
    }
    foreach($to_remove as $key=>$val){
      $redis -> srem('grouo:'.$val,$article,$db);
    }
  }
  public function get_grouop_articles($orders = "time:"){
    $redis = $this -> redis;
    $db = "queue";
    $group = '開發';
    $key = $orders.$group;
    if($redis -> exists($key,$db)){
      $argument = 2;
      $data = $redis -> zinterstore($key,$argument,['group:'.$group,$orders],$db);
      //$this -> expire($key,60,$db);
    }
    return $this->get_articles(2,$key);
  }

采用php+redis,簡易的實現文章發布系統,用戶投票,文章分組,分頁排序。

    redis是一個高性能的key-value存儲系統,最為常見的5大類型:string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型),和memcache區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。

看完上述內容,你們對如何在php中使用redis實現一個文章發布系統有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

酒泉市| 安福县| 和顺县| 师宗县| 大连市| 安丘市| 娄底市| 丰县| 民乐县| 商南县| 信阳市| 大港区| 广元市| 松江区| 云南省| 汾阳市| 临清市| 哈巴河县| 响水县| 六安市| 元谋县| 宁晋县| 宿松县| 孟州市| 连江县| 五河县| 勃利县| 乌兰察布市| 宁国市| 秦皇岛市| 蓝山县| 洛宁县| 法库县| 蓝田县| 富锦市| 丹凤县| 颍上县| 攀枝花市| 馆陶县| 昭通市| 新竹市|