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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
php简单静态页生成过程
Mar 27 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
PHP APC的安装与使用详解
Jun 13 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
php使用文本统计访问量的方法
May 12 PHP
PHP第三方登录―QQ登录实现方法
Feb 06 PHP
Swoole4.4协程抢占式调度器详解
May 23 PHP
在laravel框架中实现封装公共方法全局调用
Oct 14 PHP
php与阿里云短信接口接入操作案例分析
May 27 PHP
PHP时间相关常用函数用法示例
Jun 03 PHP
PHP安全之register_globals的on和off的区别
Jul 23 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解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
php命令行用法入门实例教程
2014/10/27 PHP
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
python机器学习之神经网络(三)
2017/12/20 Python
pyqt5自定义信号实例解析
2018/01/31 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
什么是Python中的匿名函数
2020/06/02 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
物业工作计划书
2014/01/10 职场文书
大学老师推荐信
2014/02/25 职场文书
经济信息系毕业生自荐信范文
2014/03/15 职场文书
程序员求职信
2014/04/16 职场文书
校外活动方案
2014/08/28 职场文书
国庆促销活动总结
2014/08/29 职场文书
2014年幼师工作总结
2014/11/22 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
2016年少先队活动总结
2016/04/06 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL