php消息队列redis
redis+php实现微博二发布与关注功能详解本文实例讲述了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程序设计有所帮助。
原文链接:https://www.cnblogs.com/lisqiong/p/5580927.html