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中函数的形参与实参的问题说明
Sep 01 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
Mar 23 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
php旋转图片90度的方法
Nov 07 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
smarty模板引擎之配置文件数据和保留数据
Mar 30 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
PHP实现获取文件mime类型多种方法解析
May 28 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 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 数组入门教程小结
2009/05/20 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
详解node和ES6的模块导出与导入
2020/02/19 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
2014年五一活动策划方案
2014/03/15 职场文书
经典团队口号大全
2014/06/21 职场文书
2015年助残日活动总结
2015/03/27 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
openstack中的rpc远程调用的方法
2021/07/09 Python
JavaScript实现队列结构过程
2021/12/06 Javascript
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server