php mysql redis实战_redis+php+mysql处理高并发实例

一、实验环境
ubuntu、php、apache或nginx、mysql二、利用Redis锁解决高并发问题,需求
现在有一个接口可能会出现并发量比较大的情况,这个接口使用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中。

fa11e84d3d4462b8fb5a69723cf83675.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值