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自定义函数收代码
Aug 01 PHP
PHP文件上传原理简单分析
May 29 PHP
30 个很棒的PHP开源CMS内容管理系统小结
Oct 14 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
PHP设计模式之注册树模式分析
Jan 26 PHP
PHP设计模式之抽象工厂模式实例分析
Mar 25 PHP
Laravel框架实现文件上传的方法分析
Sep 29 PHP
php更新cookie内容的详细方法
Sep 30 PHP
goto语法在PHP中的使用教程
Sep 17 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使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
JavaScript 中的事件教程
2007/04/05 Javascript
JSON 学习之完全手册 图文
2007/05/29 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
详解JS中的柯里化(currying)
2017/08/17 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
go和python变量赋值遇到的一个问题
2017/08/31 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
TensorFlow的权值更新方法
2018/06/14 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
python实现祝福弹窗效果
2019/04/07 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
Python之字典添加元素的几种方法
2020/09/30 Python
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
财务管理专业毕业生求职信范文
2013/09/21 职场文书
青奥会口号
2014/06/12 职场文书
环保标语大全
2014/06/12 职场文书
2015年路政工作总结
2015/05/22 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript
SpringBoot整合Minio文件存储
2022/04/03 Java/Android
python如何读取和存储dict()与.json格式文件
2022/06/25 Python