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 相关文章推荐
基于mysql的bbs设计(五)
Oct 09 PHP
php htmlspecialchars加强版
Feb 16 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
PHP调用.NET的WebService 简单实例
Mar 27 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
非常重要的php正则表达式详解
Jan 04 PHP
PHP mysql事务问题实例分析
Jan 18 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
Oct 18 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
php读取本地json文件的实例
Mar 07 PHP
PHP实现微信退款的方法示例
Mar 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
咖啡常见的种类
2021/03/03 新手入门
PHP strtotime函数详解
2009/12/18 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
深入浅析php json 格式控制
2015/12/24 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
解决python写的windows服务不能启动的问题
2014/04/15 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
python的setattr函数实例用法
2020/12/16 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
青年创业培训欢迎词
2014/01/10 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
新农村建设汇报材料
2014/08/15 职场文书
中学生检讨书1000字
2014/10/28 职场文书
2015大学迎新标语
2015/07/16 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
使用Pytorch训练two-head网络的操作
2021/05/28 Python
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript