小螞蟻學習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

相關文章
相關標籤/搜索