查看: 94|回复: 0

php 操作redis案例

[复制链接]

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-6-21 15:24:17 | 显示全部楼层 |阅读模式
案例1:本地操作通过php操作redis

windows本地进行应用
首先保证自己的环境已经安装上了redis,新建一个PHP文件
编写 phpinfo();
执行这个文件,看下会不会有redis的服务
如果没有 请在环境中的php的php版本的文件夹下的ext文件夹下放入一个 php_redis.dll文件
可以在我的资源那边自行获取
如果执行之后,往下滑,可以看到 redis的配置信息


这表示你的环境已经配置好了redis
接下来就是本地开启redis服务
第一个cmd窗口 cd到redis安装的位置 执行命令 redis-server
然后打开第二cmd窗口 同样也是cd到redis安装的位置 执行命令 redis-cli -a redis密码
第一个窗口不要关闭
接下来在php文件中 这个文件用来set数据
$redis = new Redis();
//连接redis服务
$redis->connect('192.168.1.231');//地址
$redis->auth('123456');//密码
//添加string类型的数据
$redis->set('string1','zzs');
//添加单个哈希类型的数据
$redis->hSet('hash1','1','2');
//添加多个哈希类型的数据
$redis->hMSet('hash2',array(
        'id'=>'1',
        'username'=>'zzs',
        'age'=>'23'
));
//添加链表类型的数据
$redis->lPush('list1','zzs');
$redis->lPush('list1','cnc');
$redis->lPush('list1','hzy');
//添加集合类型数据  无序集合
$redis->sadd('set1','zzs','czx','hzy','lys');
//添加有序集合
$redis->zadd('zset1',10,'zzs',2,'asdasdas');
然后执行这个文件
执行之后 回到我们的第二个cmd窗口
输入keys *获取redis服务当前这个数据库的所有键
就能看到我们刚才set的那个键 user888
再来个文件 用来获取数据 get
$redis = new Redis();
$redis->connect('192.168.1.213');
$redis->auth('123456');
var_dump($redis->get('string1'));//获取字符串数据
var_dump($redis->hGetAll('hash2'));//获取hash类型数据
var_dump($redis->lRange('list1',0,-1));//获取list1链表的所有数据  0 -1 表示全部
var_dump($redis->sMembers('set1'));//获取无序集合的数据
var_dump($redis->zRange('zset1',0,-1));//获取有序集合数据
echo '<pre>';
如果不是window本地操作 要连接服务器的话 但是出现连接不成功的问题
极大可能是服务器的防火墙没有关掉
执行命令
service iptables stop案例2:本地操作通过php操作redis(登陆功能)

首先看下前端页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>

    <title>Document</title>
</head>
<body>
    <table width="300">
        <form action="login1111.php" method="POST">
            <tr>
                <td colspan="2" align="center">用户登陆</td>
            </tr>
            <tr>
                <td>用户名</td>
                <td><input type="text" name="name"></td>
            </tr>
            <tr>
                <td>密码</td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr>
                <td><input type="submit" value="登陆"></td>
            </tr>
        </form>
    </table>
<script>
   

</script>
</body>
</html>
然后新建一个php文件,这文件主要是操作redis进行判断登陆的密码是否正确
<?php
header('Content-type:text/html;charset=utf8');
$redis = new Redis();
$redis->connect('192.168.0.180');
$redis->auth('123456');

//定义密码
$ps = '123456';
//接收传递的用户名和密码
$name = $_POST['name'];
$password = $_POST['password'];

//判断密码输错了几次
$flag  =$redis->get($name);
if($flag>=5){//如果输错五次
    echo '密码输错五次!';
    exit;
}
//密码的验证
if($password  == $ps){
    //密码正确
    echo '密码正确!';
}else{
    //密码错误  错误次数记录起来
    //键的名称是登陆的用户名
    //incr  将键值+1
    $redis->incr($name);
    //给$name 设置有效期
    $redis->setTimeout($name,1800);
    echo '密码错误!';
}
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要请戳这里链接 或 者关注咱们下面的知乎专栏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表