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 set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
PHP中获取变量的变量名的一段代码的bug分析
Jul 07 PHP
php文件操作实例代码
May 10 PHP
php中使用接口实现工厂设计模式的代码
Jun 17 PHP
php cli 小技巧
Jun 03 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
CI框架中$this->load->library()用法分析
May 18 PHP
php入门教程之Zend Studio设置与开发实例
Sep 09 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
PHP实现验证码校验功能
Nov 16 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
php实现两个数组相加的方法
2015/02/17 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
PDO::errorCode讲解
2019/01/28 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
对python中的pop函数和append函数详解
2018/05/04 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
python向图片里添加文字
2019/11/26 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
五年级科学教学反思
2014/02/05 职场文书
索桥的故事教学反思
2014/02/06 职场文书
文字自荐书范文
2014/02/10 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书