小蚂蚁学习Redis笔记(14)——Redis之最后的demo

记录一下几段比较关键的代码:stuck_out_tongue_closed_eyes:php

1. 实例化对象。

昨天已经将phpredis扩展安装好,今天就能够使用php操做redis了。
先写一个init.phphtml

<?php
	//实例化redis对象
	$redis=new Redis();
	//链接redis服务器
	$res=$redis->connect('localhost');
	//受权
	$redis->auth('allen');
?>

2. 用户注册

<?php
    //载入redis实例化类
	require('./init.php');
    //获取数据
	$username	=	$_POST['username'];
	$password	=	$_POST['password'];
	$age		=	$_POST['age'];
	//自增1,用来获取主键id
	$user_id=$redis->incr('user_id');
	
	$data=array(
		'user_id'=>$user_id,
		'username'=>$username,
		'password'=>$password,
		'age'=>$age
	);
	
	//使用哈希类型,将用户的信息存储起来
	$res=$redis->hmset('user:'.$user_id,$data);
    //将用户的user_id存入链表类型,为之后的增删改查提供便利
	$redis->rpush('uid',$user_id);
    //设置一个字符串类型,方便用户登录判断。
	$redis->set('user:'.$username,$user_id);
	
	header('location:./list.php');
?>

3. 用户列表

在用户列表中,实现了分页,以及为用户的增删改查和关注设置了get参数。前端

<!doctype html>
<html>
<head>
	<meta charset='utf-8'>
</head>
<body>
<?php
	require('./init.php');
	//用户总数。查看在注册时添加的链表,能够知道有多少个用户
	$count=$redis->lsize('uid');
	
	//页大小
	$page_size=3;
	//当前页码
	$page_num=!empty($_GET['page'])?$_GET['page']:1;
	//页总数
	$page_count=ceil($count/$page_size);
	//拿出每页须要展现的用户id,根据下标拿出
	$ids=$redis->lrange('uid',($page_num-1)*$page_size,$page_size*$page_num-1);
	//根据用户id循环出,用户的我的信息,添加到一个数组,到前端遍历便可。
	$data=array();
	foreach($ids as $v){
		$data[]=$redis->hgetall('user:'.$v);
		
	}
	//
?>
<a href='./reg.html'>注册</a>
<?php
	if(!empty($_COOKIE['auth'])){
	$uid=$redis->get('auth:'.$_COOKIE['auth']);
	$username=$redis->hget('user:'.$uid,'username');
?>
	欢迎您,<?php echo $username?>
	<a href="./logout.php">退出</a>
<?php
 }else{
?>
	<a href="./login.php">登录</a>
	
<?php	 
 } 
 ?>


<table border='1'>
	<tr>
		<td>user_id</td>
		<td>username</td>
		<td>password</td>
		<td>age</td>
		<td>操做</td>
	</tr>
	<?php foreach($data as $k=>$v){ ?>
		<tr>
			<td><?php echo $v['user_id']?></td>
			<td><?php echo $v['username'] ?></td>
			<td><?php echo $v['password'] ?></td>
			<td><?php echo $v['age'] ?></td>
			<td>
				<a href="./del.php?user_id=<?php echo $v['user_id']?>">删除</a>
				<a href="./modi.php?user_id=<?php echo $v['user_id']?>">修改</a>
				<?php
					if(!empty($_COOKIE['auth']) && $uid != $v['user_id']){
					
				?>
				<a href="./addfans.php?myid=<?php echo $uid?>&user_id=<?php echo $v['user_id']?>">加关注</a>
				<?php }?>
			</td>
		</tr>
	<?php } ?>	
	<tr>
		<td colspan=5>
			<a href="./list.php?page=1">首页</a>
			<a href="./list.php?page=<?php echo ($page_num-1)<1?1:$page_num-1 ?>">上一页</a>
			<a href="./list.php?page=<?php echo ($page_num+1)>$page_count?$page_count:$page_num+1 ?>">下一页</a>
			<a href="./list.php?page=<?php echo $page_count ?>">尾页</a>
			
		</td>
	</tr>
</table>
<table border='1'>
	<caption>我关注的人</caption>
	<tr>
		<td>user_id</td>
		<td>username</td>
		<td>age</td>
		
	</tr>
	<?php
		//本身关注的无序集合,从中拿出全部的关注人user_id
		$array_uid=$redis->smembers('user:'.$uid.':following');
		$data=array();
		foreach($array_uid as $v){
			$data[]=$redis->hgetall('user:'.$v);
			
		}
	?>
	<?php foreach($data as $k=>$v){ ?>
		<tr>
			<td><?php echo $v['user_id']?></td>
			<td><?php echo $v['username'] ?></td>
			<td><?php echo $v['age'] ?></td>
		</tr>
	<?php } ?>	
	
</table>
<table border='1'>
	<caption>个人粉丝</caption>
	<tr>
		<td>user_id</td>
		<td>username</td>
		<td>age</td>
		
	</tr>
	<?php
		//本身全部粉丝的无序集合
		$array_uid=$redis->smembers('user:'.$uid.':followers');
		$data=array();
		foreach($array_uid as $v){
			$data[]=$redis->hgetall('user:'.$v);
			
		}
	?>
	<?php foreach($data as $k=>$v){ ?>
		<tr>
			<td><?php echo $v['user_id']?></td>
			<td><?php echo $v['username'] ?></td>
			<td><?php echo $v['age'] ?></td>
		</tr>
	<?php } ?>	
	
</table>
</body>
</html>

4. 用户登陆

<?php
	require('./init.php');
	$username=$_POST['username'];
	$password=$_POST['password'];
	//首先查询是否存在这个keys,也就是查看用户名是否正确
	$uid=$redis->get('user:'.$username);
	if($uid){
		//用户名正确,查看密码是否正确
		$pwd=$redis->hget('user:'.$uid,'password');
		if($pwd == $password){
			//若是正确保存cookie
			$auth=md5(time().rand());
			setcookie('auth',$auth,time()+86400);
			
			header('location:./list.php');
		}else{
			
			echo '密码不对';
		}
		
	}else{
		echo 'error';
	}
?>

5. 用户删除

<?php
	require('./init.php');
	//传入须要删除的user_id
	$user_id=$_GET['user_id'];
	//删除用户信息的key
	$result=$redis->del('user:'.$user_id);
	//在保存用户user_id的链表中,将其删除
	$redis->lrem('uid',$user_id);
	if($result){
		header('location:./list.php');
	}else{
		echo 'error';
	}	
?>

6. 用户关注

<?php
	/*
		$user_id是我要关注的用户的id
		myid是我本身的id
	*/
	$user_id=$_GET['user_id'];
	$myid=$_GET['myid'];
	require('./init.php');
	/*
		我本身的关注无序集合,保存了我关注的全部人
	*/
	$redis->sadd('user:'.$myid.':following',$user_id);
	/*
		被关注人的粉丝集合,保存了他全部的粉丝
	*/
	$redis->sadd('user:'.$user_id.':followers',$myid);
	
	header('location:./list.php');
?>

Redis就暂时到这里吧,之后实际用到了,再深刻研究研究。redis

相关文章
相关标签/搜索