本文实例为大家分享了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:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月28日
2024年11月28日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]