redis+php实现微博(二)发布与关注功能详解


Posted in PHP onSeptember 23, 2019

本文实例讲述了redis+php实现微博发布与关注功能。分享给大家供大家参考,具体如下:

数据结构:

set post:postid:3:time timestamp
set post:postid:3:userid 5
set post:postid:3:content 测试发布哈哈哈哈

incr global:postid
set post:postid:$postidcho "用户名密码不能够为空!";

关注微博

following:3

被关注(粉丝)

followed:3

把发布的微博推给自己的粉丝

recivepost:10 postid

微博的发布代码:

include("function.php");
include("header.php");
$content = I('content');
if(!$content){
  error('内容不能够为空');
}
$user = isLogin();
if($user==false){
  header("location:index.php");
  exit();
}
$r = redis_connect();
$postid = $r->incr('global:postid');
//$r->set("post:postid:".$postid.":time",time());
//$r->set("post:postid:".$postid.":userid",$user['userid']);
//$r->set("post:postid:".$postid.":content",$content);
$r->hmset("post:postid:".$postid,array('userid'=>$user['userid'],'username'=>$user['username'],'time'=>time(),'content'=>$content));
//把微博推给自己的粉丝
$fans = $r->smembers("followed:".$user['userid']);
$fans[] = $user['userid'];
foreach($fans as $fansid){
  $r->lpush('recivepost:'.$fansid,$postid);
}
//单独累计个人发布的信息
$r->lpush('userpostid:'.$user['userid'],$postid);
header("location:home.php");
exit;
include("bottom.php");

微博的关注代码:

include("function.php");
include("header.php");
if(isLogin()==false){
  header("location:index.php");
  exit;
}
$user = isLogin();
$uid = trim($_GET['uid']);
$f = trim($_GET['f']);
$r = redis_connect();
if($f==0){
  //将关注与被关注的数据结构存入redis
  $r->sadd("following:".$user['userid'],$uid);
  $r->sadd("followed:".$uid,$user['userid']);
}else{ 
  //取消关注
  $r->srem("following:".$user['userid'],$uid);
  $r->srem("followed:".$uid,$user['userid']);
}
//根据传递过来的userid查找username
$uname = $r->get("user:userid:".$uid.":username");
header("location:profile.php?u=".$uname);
include("bottom.php");

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php初学者写及时补给skype用户充话费的小程序
Nov 02 PHP
PHP 全角转半角实现代码
May 16 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
Jan 19 PHP
php实现单笔转账到支付宝功能
Oct 09 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
Laravel框架集合用法实例浅析
May 14 PHP
redis+php实现微博(一)注册与登录功能详解
Sep 23 #PHP
php日志函数error_log用法实例分析
Sep 23 #PHP
php扩展开发入门demo示例
Sep 23 #PHP
PHP使用phpunit进行单元测试示例
Sep 23 #PHP
php快速导入大量数据的实例方法
Sep 23 #PHP
关于Yii中模型场景的一些简单介绍
Sep 22 #PHP
php定期拉取数据对比方法实例
Sep 22 #PHP
You might like
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
hessian 在PHP中的使用介绍
2010/12/13 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
js控制table合并具体实现
2014/02/20 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
原生js实现日期联动
2015/01/12 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
jquery 构造函数在表单提交过程中修改数据
2015/05/25 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
在Python中操作字典之update()方法的使用
2015/05/22 Python
python监控文件并且发送告警邮件
2018/06/21 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
python Cartopy的基础使用详解
2020/11/01 Python
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
介绍一下.net和Java的特点和区别
2012/09/26 面试题
How TDD works
2012/09/30 面试题
网站开发实习生的自我评价
2013/12/11 职场文书
教师演讲稿范文
2014/01/08 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
工作失职检讨书
2015/01/26 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android
POST提交数据常见的四种方式
2022/01/18 HTML / CSS
MySQL查询日期时间
2022/05/15 MySQL