欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php+redis+mysq如何l处理高并发(实例代码)

程序员文章站 2022-03-15 15:24:44
...
本篇文章给大家带来的内容是关于php+redis+mysq如何l处理高并发(实例代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、实验环境
ubuntu、php、apache或nginx、mysql
二、需求
现在有一个接口可能会出现并发量比较大的情况,这个接口使用php写的,做的功能是接收 用户的GET请求中的name字段,然后将这个字段存到mysql中,现在先将数据放到redis的队列中,然后让redis定时将这些数据转移到mysql中。
二、实现步骤
1.新建数据库test及 数据表test,建表语句如下

CREATE TABLE `test` (
  `name` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf-8

1.在/var/www/test中新建index.php,内容如下,并配置虚拟主机使其可访问到。

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
try {
    $res = $redis->LPUSH('name', $_REQUEST["name"]);
} catch (Exception $e) {
    echo $e->getMessage();
}

2.在相同的目录下新建redis.php文件,注意修改其中的数据库密码等配置,内容如下

<?php
$redis = new Redis();
$redis->pconnect('127.0.0.1',6379);
$mysql=mysqli_connect("localhost","root","bnm");
mysqli_select_db($mysql,"test") or die("不能选择数据库");
if(!$mysql){
    die("连接失败");
}
while (true){
    try{
        $value = $redis->LPOP('name');
        if(!$value){
            echo "等待";
        }else{
            $sql="insert into test(name) values ('".$value."')";
            $result=mysqli_query($mysql,$sql);
            if($result&&mysqli_affected_rows($mysql)>0){
                echo "插入成功";
            }else{
                echo "插入失败:".mysqli_error($mysql);
            }
        }
    }catch(Exception $e){
        echo $e->getMessage();
    }
    sleep(1);
}

3.运行redis.php脚本文件

nohup php redis.php &

4.访问index.php脚本文件,如:http://192.168.116.128/?name=33,然后查看数据是否已经到mysql中。

相关文章推荐:

php数组函数有哪些操作?php数组函数的应用(附代码)

thinkphp5框架与Android实现二维码的生成代码

以上就是php+redis+mysq如何l处理高并发(实例代码)的详细内容,更多请关注其它相关文章!

相关标签: redis php