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加密解密的代码
Oct 09 PHP
php中防止SQL注入的最佳解决方法
Apr 25 PHP
PHP Error与Logging函数的深入理解
Jun 03 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
Jul 03 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 PHP
分享一个Laravel好用的Cache宏
Mar 02 PHP
PHP中is_dir()函数使用指南
May 08 PHP
php中static和const关键字用法分析
Dec 07 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
Oct 24 PHP
PHP实现常用排序算法的方法
Feb 05 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
重置版战役片段
2020/04/09 魔兽争霸
PHP时间戳使用实例代码
2008/06/07 PHP
php列出一个目录下的所有文件的代码
2012/10/09 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
javascript的BOM汇总
2015/07/16 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
Python Requests 基础入门
2016/04/07 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
如何在Shell脚本中使用函数
2015/09/06 面试题
自动化专业本科毕业生求职信
2013/10/20 职场文书
校三好学生主要事迹
2014/01/11 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
竞聘书格式及范文
2014/03/31 职场文书
小学语文课后反思精选
2014/04/25 职场文书
2014年教研工作总结
2014/12/06 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python