• 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");
    

      

  • 相关阅读:
    01《软件工程思想》读后感01
    寒假小软件开发记录04--添加字体
    寒假小软件开发记录03--选择图片
    fiddler2 中文乱码问题
    一个很好的软件 fiddler4
    关于svn的安装问题
    ZF-关于海南的增删改需求
    (转)收集:Hibernate中常见问题 No row with the given identifier exists问题的原因及解决
    关于sqlserver还原不了数据库的原因
    OraclePLSQL Developer报“动态执行表不可访问,本会话的自动统计被禁止”的解决方案
  • 原文地址:https://www.cnblogs.com/lisqiong/p/5580927.html
Copyright © 2020-2023  润新知