一、用户注册登录

  

    include './header.php';
include './function.php'; $username = p('username');
$password = p('password');
$password2 = p('password2'); if ($password != $password2) {
redirect("./login.php", "两次密码输入不一致", 3);
} if (!$username || !$password) {
redirect("./login.php", "请输入用户名或秘密", 3);
} $redis = connRedis();
/*
用户表设置
user:id:1:username
user:id:1:password user:username 1
*/
$id = $redis->incr("global:user");
$redis->set("user:id:$id:username", $username);
$redis->set("user:id:$id:password", $password);
$redis->set("user:username:$username", $id); //维护一个最新50个用户的表
$redis->lpush("newuser", $id);
$redis->ltrim("newuser", 0, 49); redirect("./login.php", "用户名:$username 注册成功", 3);
   include './header.php';
include './function.php'; $username = p('username');
$password = p('password');
if (!$username || !$password) {
redirect("./login.php", "请输入用户名或秘密", 3);
} $redis = connRedis();
$id = $redis->get("user:username:$username");
$oldPassword = $redis->get("user:id:$id:password");
closeRedis($redis);
if ($password != $oldPassword) {
redirect("./login.php", "用户名或秘密不正确", 3);
}
//设置cookie
setcookie("id", $id);
setcookie("username", $username);
setcookie("password", $password);
redirect("./home.php", "登录成功", 3);

二、发表动态

  

    include './header.php';
include './function.php'; $status = p('status');
if (empty($status)) {
redirect("./home.php", "请输入内容", 3);
}
/*
post表(发动态表)
post:id:1:uid
post:id:1:content
*/
$redis = connRedis();
$id = $redis->incr("global:post"); $redis->hMset("post:id:$id", array("uid" => $_COOKIE['id'], "content" => $status, "time" => date("Y-m-d H:i:s", time()), "username" => $_COOKIE['username'])); //最近50条发布的信息
$redis->lpush("newpost", $id);
$redis->ltrim("newpost", 0, 49); //获取我的粉丝,并把我的动态发给他
$fans = $redis->smembers("flowing:userid:{$_COOKIE['id']}");
$fans[] = $_COOKIE['id'];
foreach ($fans as $fansid) {
$redis->lpush("receivepost:$fansid", $id);
}

三、关注页

    include './header.php';
include './function.php'; $uid = g("uid");
$f = g("f");
$redis = connRedis();
$u = $redis->get("user:id:$uid:username");
if (!$u) {
redirect("./home.php", "非法数据", 3);
}
if ($f) {
//关注
$redis->sAdd("flow:userid:{$_COOKIE['id']}", $uid);
$redis->sAdd("flowing:userid:$uid", $_COOKIE['id']);
$msg = "关注成功";
}else{
//取消
$redis->srem("flow:userid:{$_COOKIE['id']}", $uid);
$redis->srem("flowing:userid:$uid", $_COOKIE['id']);
$msg = "取消关注成功";
}
redirect("./profile.php?u=$u", $msg, 3);

四、热点页

  

    include_once("./header.php");
include_once("./function.php");
if (!$_COOKIE['id']) {
redirect("./login.php", "请先登录", 3);
}
$redis = connRedis();
$data = $redis->sort("newuser", array("get" => "user:id:*:username", "limit" => array(0,1), "sort" => "desc"));
//获取最新发布的动态id
$newpost = $redis->lRange("newpost", 0, -1);

Redis 之仿微博demo的更多相关文章

  1. Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展

    本文由“猫爸iYao”原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样:   ▲ 微信群聊界面里的@人功能    ▲ QQ群聊界面里 ...

  2. 仿微博视频边下边播之滑动TableView自动播放-b

    Tips:这次的内容分为两篇文章讲述01.[iOS]仿微博视频边下边播之封装播放器 讲述如何封装一个实现了边下边播并且缓存的视频播放器.02.[iOS]仿微博视频边下边播之滑动TableView自动播 ...

  3. Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解

    一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis, ...

  4. iOS界面流畅技巧之微博 Demo 性能优化技巧

    微博 Demo 性能优化技巧 我为了演示 YYKit 的功能,实现了微博和 Twitter 的 Demo,并为它们做了不少性能优化,下面就是优化时用到的一些技巧. 预排版 当获取到 API JSON ...

  5. android 表情,软键盘冲突解决方案(仿微博等SNS应用)

    之前总想搞一下这个模块,可是由于忙碌总是推迟,现在就把这块好好的弥补过来,下面是我实现的思路.本人才疏学浅,还望大家不要见笑. 首先我们还是先看写示例:            上面应用应该不用我过多介 ...

  6. h5聊天室web端(仿微博、微信)|h5仿微信网页端|仿微信界面弹窗

    这段时间一直在着手h5开发手机端聊天系统——html5仿微信聊天室,最近又在原先基础上开发了一个仿微信.微博网页web版聊天系统,使用到了HTML5+css3+jQuery+wcpop等技术开发,弹窗 ...

  7. redis+php实现微博功能(二)

    数据结构: set post:postid:3:time timestampset post:postid:3:userid 5 set post:postid:3:content 测试发布哈哈哈哈 ...

  8. redis+php实现微博功能(一)

    (一).微博功能概况 微博用户账号注册 微博用户登录 微博发布 添加微博好友(粉丝) 微博推送 微博冷数据写入mysql数据库 (二).redis数据结构设计 这节分享微博用户注册与登录:我们完全采用 ...

  9. 仿微博——MJExtension之字典转模型

    1.模型类中定义好属性 2.用AFN请求下来的数据保存到字典中 3.从字典中取出微博字典数组 //微博字典数组 NSArray *restrictArray = responseObject[@&qu ...

随机推荐

  1. [Vue @Component] Pass Props to Vue Functional Templates

    Functional templates allow you to create components consisting of only the template tag and exposing ...

  2. Java中集合List,Map和Set的差别

    Java中集合List,Map和Set的差别 1.List和Set的父接口是Collection.而Map不是 2.List中的元素是有序的,能够反复的 3.Map是Key-Value映射关系,且Ke ...

  3. Hadoop Yarn(一)—— 单机伪分布式环境安装

    HamaWhite(QQ:530422429)原创作品,转载请注明出处:http://write.blog.csdn.net/postedit/40556267. 本文是依据Hadoop官网安装教程写 ...

  4. MODULE_DEVICE_TABLE的理解【转】

    本文转载自:http://blog.csdn.net/sidely/article/details/39666471 在Linux IIC驱动中看到一段代码: static struct platfo ...

  5. Git:代码冲突常见解决方法【转】

    本文转载自:http://blog.csdn.net/iefreer/article/details/7679631 如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时 ...

  6. linux 设备树及节点引用【转】

    本文转载自:http://blog.csdn.net/KjfureOne/article/details/51972854 1.ARM Linux社区为什么要引入设备树 Linux之父Linus To ...

  7. 洛谷P2340 奶牛会展

    题目背景 奶牛想证明它们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行 了面试,确定了每头奶牛的智商和情商. 题目描述 贝西有权选择让哪些奶牛参加展览.由于负的智商或情商会造成 ...

  8. 64. Extjs中grid 的ColumnModel 属性配置

    转自:https://blog.csdn.net/u011530389/article/details/45821945 本文导读:Ext.grid.ColumnModel 该类用于定义表格的列模型, ...

  9. PCB MongoDB 索引

    在索引在数据库中非常重要,当然在MongoDB也是一样啦. 一.获取索引 db.ppeflow.getIndexes() 初始化,每个集都默认_id字段为主键objectid,索引名为_id_ 二.创 ...

  10. [Swift通天遁地]二、表格表单-(3)在表格中嵌套另一个表格并使Cell的高度自适应

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...