久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

php redis實現文章發布系統(用戶投票系統)

這篇文章主要為大家詳細介紹了php redis實現文章發布系統以及用戶投票系統,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了php實現文章發布系統、用戶投票系統的具體代碼,供大家參考,具體內容如下

/**
  * @data 文章發布
  *    文章詳情散列表中遞增ID,講文章發布者ID寫入投票用戶集合中,設置投票時間為一周
  *    講文章內容寫入文章散列中,講文章寫入文章評分有序集合和文章發布有序集合中
  * @author Lorne
  * @date 2017-03-03
  */
  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);
  }

/**
  * @data 用戶投票
  *    獲取文章的ID,用戶ID,判斷該篇文章是否已經過了投票時間,再判斷用戶是否已經投過票
  *    寫入文章對應投票用戶表中(voted:文章ID),對應的文章評分加,文章詳情內容中的votes統計加1
  * @author Lorne
  * @date 2017-03-03
  */
  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;
    }
  }
/**
  * @data 文章列表分頁
  *    對文章評分有序集合或者時間發布有序集合做分頁處理,獲取文章ID后,去文章詳情散列表中查詢該文章詳情
  * @author Lorne
  * @date 2017-03-03
  */
  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;
  }
/**
  * @data 文章添加組和移除組
  *    講該文章加入不同的分組中,或者從個分組中移除該篇文章
  * @author Lorne
  * @date 2017-03-03
  */
  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);
    }
  }
/**
  * @data 組集合中的文章根據評分或者時間分頁排序
  *    
  * @author Lorne
  * @date 2017-03-03
  */
  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(主從)同步。

    最近越來越喜歡用上redis,有情投意合者一起多多交流呀。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結合實例形式分析了php實現針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現的多維數組排序算法,結合實例形式對比分析了php針對多維數組及帶有鍵名的多維數組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結合ajaxuploadfile實現無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 国产精品高潮呻吟久久 | 亚洲五码在线 | 免费观看一级特黄欧美大片 | 99久久精品一区二区毛片吞精 | 黄色大全免费看 | 国产一级在线观看 | 激情欧美一区二区三区中文字幕 | 欧美成人精品在线 | 国产91丝袜在线熟 | 国产成人精品网站 | 羞羞午夜 | 日韩视频中文字幕 | 狠狠操狠狠操 | 精品一区二区视频 | 久久久久国产 | 东京av男人的天堂 | 国产sm主人调教女m视频 | 国产精品久久久久久久岛一牛影视 | 懂色av色香蕉一区二区蜜桃 | 国产99视频精品免费视频7 | 美女久久| 精品国产乱码久久久久久牛牛 | 久久69精品久久久久久国产越南 | 日韩在线视频免费观看 | 久久精品国产亚洲a | 99热视| 美国一级毛片a | 久久宗合色| 日日操夜夜操视频 | 久草在线视频中文 | 日本一区二区三区视频在线 | 久久久妇女国产精品影视 | 亚洲日本中文字幕在线 | 美女福利网站 | 国产一区二区三区在线看 | 天天躁日日躁狠狠躁白人 | 午夜小电影 | 断背山在线观看 | 国产精品美女久久久久久久网站 | 99成人免费视频 | 免费在线精品视频 |