侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

NoSQL数据库之Redis数据库管理(PHP-REDIS实例)

php  /  管理员 发布于 5年前   415

一.redis.php

<?php      //实例化      $redis = new Redis();      //连接服务器      $redis->connect("localhost");      //授权      $redis->auth("lamplijie");      //相关操作      $redis->set("name","lampbrother");      $data = $redis->key("*");      var_dump($data);

页面显示结果:

array(1) { [0]=> string(4) "name" }

 

二.简单回顾redis的四种数据类型

        a.string:最简单的数据类型

set user:001:name lijieset user:001:age 20

        b.hash:可以当做表,hash table,比string速度快

hset user:001 name lamp age 20hset user:001 sex nanhset user:002 name lijie age 20hgetall user:001

        c.list:栈、队列

        d.set:并集、交集、差集

        e.zset:set升级版,多了一个顺序

 

三.小型的用户管理系统(用户的增删改查、分页、登陆退出、加关注)

    redis.php

<?php    //实例化    $redis = new Redis();    //连接服务器    $redis->connect("localhost");    //授权    $redis->auth("lamplijie");

    add.php

<form action="reg.php" method="post">    用户名:<input type="text" name="username"/><br/>    密码:<input type="password" name="password"/><br/>    年龄:<input type="text" name="age"/><br/>    <input type="submit" value="注册"/>    <input type="reset" value="重新填写"/></form>

    reg.php

<?php    require("redis.php");    $username = $_POST['username'];    $password = md5($_POST['password']);    $age = $_POST['age'];    echo $uid = $redis->incr("userid");    $redis->hmset("user:".$uid,array("uid"=>$uid,"username"=>$username,"password"=>$password,"age"=>$age));    $redis->rpush("uid",$uid);    $redis->set("username:".$username,$uid);    header("location:list.php");
    list.php
<a href="add.php">注册</a><?php   require("redis.php");   if(!empty($_COOKIE['auth'])){       $id = $redis->get("auth:".$COOKIE['auth']);       $name = $redis->hget("user:".$id,"username");?>欢迎您,<?php echo $name?>,<a href="logout.php">退出</a><?php}else{?><a href="login.php">登陆</a><?php}    //用户总数    $count = $redis->lsize("uid");        //页大小    $page_size = 3;    //当前页码    $page_num = (!empty($_GET['page']))?$_GET['page']:1;        //页总数    $page_count = ceil($count/$page_size);    $ids = $redis->lrange("uid",($page_num-1)*$page_size,(($page_num-1)*$page_size+$page_size-1));        //var_dump($ids);        /*    for($i=1;$i<=($redis->get("userid"));$i++) {        $data[] = $redis->hgetall("user:".$i);    }*/        foreach($ids as $v){        $data[] = $redis->hgetall("user:".$v);    }        //var_dump($data);    //$data = array_filter($data);?><table border="1">   <tr>      <th>uid</th>      <th>username</th>      <th>age</th>      <th>操作</th>   </tr><?php foreach($data as $v){?>   <tr>       <td><?php echo $v['uid']?></td>       <td><?php echo $v['username']?></td>       <td><?php echo $v['age']?></td>       <td>           <a href="del.php?id=<?php echo $v['uid']?>">删除</a>           <a href="mod.php?id=<?php echo $v['uid']?>">编辑</a>           <?php if(!empty($_COOKIE['auth']) && $id!=$v['uid']){?>               <a href="addfans.php?id=<?php echo $v['uid']?>&uid=<?php echo $id?>">加关注</a>           <?php } ?>       </td>   </tr><?php}?><tr>   <td colspan="4">       <a href="?page=<?php echo(($page_num-1)<=1)?1:($page_num-1) ?>">上一页</a>       <a href="?page=<?php echo(($page_num+1)>=$page_count)?$page_count:($page_num+1) ?>">下一页</a>       <a href="?page=1">首页</a>       <a href="?page=<?php echo $page_count ?>">尾页</a>       当前<?php echo $page_num ?>页       总共<?php echo $page_count ?>页       总共<?php echo $count ?>个用户   </td></tr></table><table border=1>   <caption>我关注了谁</caption>   <?php $data = $redis->smembers("user:".$id.":following");?>   foreach($data as $v) {      $row = $redis->hgetall("user:".$v);   <tr>      <td><?php echo $row['uid']?></td>      <td><?php echo $row['username']?></td>      <td><?php echo $row['age']?></td>   </tr>   <?php   }   ?></table><table border=1>   <caption>我的粉丝</caption>   <?php       $data = $redis->smembers("user:".$id.":followers");       foreach($data as $v) {           $row = $redis->hgetall("user:".$v);   ?>   <tr>       <td><?php echo $row['uid']?></td>       <td><?php echo $row['username']?></td>       <td><?php echo $row['age']?></td>   </tr>   <?php       }   ?></table>

    del.php

<?php   require("redis.php");   $uid = $_GET['id'];   $redis->del("user:".$uid);   $redis->lrem("uid",$uid);   header("localhost:list.php");
    mod.php
<?php  require("redis.php");  $uid = $_GET['id'];  $data = $redis->hgetall("user:".$uid);?><form action="doedit.php" method="post">    <input type="hidden" value="<?php echo $data['uid']?>" name="uid"/>    用户名:<input type="text" name="username" value="<?php echo $data['username']?>"/><br/>    年龄:<input type="text" name="age" value="?php echo $[data['age']?>"/><br/>    <input type="submit" value="修改"/>    <input type="reset" value="重新填写"/></form>

    doedit.php

<?php   $uid = $_POST['uid'];   $username = $_POST['username'];   $age = $_POST['age'];   $a = $redis->hmset("user:".$uid,array("username"=>$username,"age"=>$age));   if($a) {       header("location:list.php");   }else {       header(location:mod.php?id=".$uid);   }

    login.php

<?php    require("redis.php");    $username = $_POST['username'];    $pass = $_POST['password'];    $id = $redis->get("username:".$username);    if(!empty($id)) {        $password = $redis->hget("user:".$id,"password");        if(md5($pass) == $password) {            $auth = md5(time().$username.rand());            $redis->set("auth:".$auth,$id);            setcookie("auth", $auth, time() + 86400);            header("location:list.php");        }    }?><form action="" method="post">     用户名:<input type="text" name="username"/><br/>     密码:<input type="password" name="password"/><br/>     <input type="submit" value="登陆"/></form>

    logout.php

<?php    setcookie("auth","",time()-1);    header("location:list.php");

    addfans.php

<?php    $id = $_GET['id'];    $uid = $_GET['uid'];    require("redis.php");    $redis->sadd("user:".$uid.":following",$id);    $redis->sadd("user:".$id.":followers",$uid);    header("location:list.php");
    当然,采用sdiff user:1:following user:2:following语句,用户1可以向用户2推荐关注(即用户1的关注与用户2的关注的差集)。


  • 上一条:
    PHP如果自带一个小型的web服务器就好了
    下一条:
    php生成指定位数(13位)的时间戳
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客