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添加MySQL数据记录代码
Jun 07 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
Dec 02 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
PHP CURL 内存泄露问题解决方法
Feb 12 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
PHP实现简易blog的制作
Oct 24 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
thinkPHP5.0框架事务处理操作简单示例
Sep 07 PHP
php中的buffer缓冲区用法分析
May 31 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
ThinkPHP采用模块和操作分析
2011/04/18 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
php Session无效分析资料整理
2016/11/29 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
javascript中this指向详解
2016/04/23 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
2017/01/13 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
使用python实现baidu hi自动登录的代码
2013/02/10 Python
跟老齐学Python之集合的关系
2014/09/24 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python实现BackPropagation算法
2017/12/14 Python
python语言中with as的用法使用详解
2018/02/23 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
员工离职感谢信
2015/01/22 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript