Redis 之仿微博demo
一、用户注册登录
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的更多相关文章
- Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展
本文由“猫爸iYao”原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样: ▲ 微信群聊界面里的@人功能 ▲ QQ群聊界面里 ...
- 仿微博视频边下边播之滑动TableView自动播放-b
Tips:这次的内容分为两篇文章讲述01.[iOS]仿微博视频边下边播之封装播放器 讲述如何封装一个实现了边下边播并且缓存的视频播放器.02.[iOS]仿微博视频边下边播之滑动TableView自动播 ...
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis, ...
- iOS界面流畅技巧之微博 Demo 性能优化技巧
微博 Demo 性能优化技巧 我为了演示 YYKit 的功能,实现了微博和 Twitter 的 Demo,并为它们做了不少性能优化,下面就是优化时用到的一些技巧. 预排版 当获取到 API JSON ...
- android 表情,软键盘冲突解决方案(仿微博等SNS应用)
之前总想搞一下这个模块,可是由于忙碌总是推迟,现在就把这块好好的弥补过来,下面是我实现的思路.本人才疏学浅,还望大家不要见笑. 首先我们还是先看写示例: 上面应用应该不用我过多介 ...
- h5聊天室web端(仿微博、微信)|h5仿微信网页端|仿微信界面弹窗
这段时间一直在着手h5开发手机端聊天系统——html5仿微信聊天室,最近又在原先基础上开发了一个仿微信.微博网页web版聊天系统,使用到了HTML5+css3+jQuery+wcpop等技术开发,弹窗 ...
- redis+php实现微博功能(二)
数据结构: set post:postid:3:time timestampset post:postid:3:userid 5 set post:postid:3:content 测试发布哈哈哈哈 ...
- redis+php实现微博功能(一)
(一).微博功能概况 微博用户账号注册 微博用户登录 微博发布 添加微博好友(粉丝) 微博推送 微博冷数据写入mysql数据库 (二).redis数据结构设计 这节分享微博用户注册与登录:我们完全采用 ...
- 仿微博——MJExtension之字典转模型
1.模型类中定义好属性 2.用AFN请求下来的数据保存到字典中 3.从字典中取出微博字典数组 //微博字典数组 NSArray *restrictArray = responseObject[@&qu ...
随机推荐
- ADO连接ACCESS2007及以上版本的数据库
function getaccessstr(databasename:string;password:string;accessVer:string='access2003'):string; beg ...
- MySQL: 打开binlog选项后无法重启MySQL
binlog目录权限不足导致,用chown mysql:mysql <log folder>即可解决此问题.
- python requests使用
参考:http://cn.python-requests.org/zh_CN/latest/ 1.使用requests发送请求: >>> r = requests.get('http ...
- Fedora下克隆Octopress博客
我在自己的github上搭建了一个Octopress博客(http://songlee24.github.io/),用于不定期的写一些学习笔记和心得体会.但是有时候由于换了电脑或者重装了linux系统 ...
- 解决华为手机不出现logcat日志的问题
问题描写叙述:公司一部华为手机在连接Eclipse时在Logcat中看不到相关日志 解决方法:1 进入手机拨号界面2 输入*#*#2846579#*#*3 输入完成后自己主动跳转到測试界面4 依次选择 ...
- Unity游戏小地图生成
孙广东 2015.6.25 这个在AssetStore上有几个不错的插件, 除了知道原理,能自己实现还是好的. 非常多插件是不会直接使用的.而是要依据自己项目的需求进行改动或者就是自己写. 那么我们 ...
- _io.TextIOWrapper
''' SELECT * FROM Info_Roles WHERE Flag=1 LIMIT 2; select top y * from 表 where 主键 not in(select top ...
- 用R语言完成的交通可视化报告
http://sztocc.sztb.gov.cn/roadcongmore.aspx最终实现这几个图:1. 实时道路交通可视化2. 实时道路拥堵排名3. 历史路况时间序列图4. 每日每小时道况热力图 ...
- 关于三星手机调用相机返回后activity被回收的问题
今天遇到个问题很蛋疼啊,别的手机没问题,唯独三星机型的手机跳转到相机之后,回来activity没了.这个或许是三星内部回收机制的关系,因为相机打开之后消耗会比较大, 所以后面的进程都给暂时回收掉了,加 ...
- Bootloader - main system - Recovery的三角关系【转】
本文转载自:http://blog.csdn.net/u012719256/article/details/52304273 一.MTD分区: BOOT: boot.img,Linux ...