首頁 >後端開發 >php教程 >php+redis+mysq如何l處理高並發(實例程式碼)

php+redis+mysq如何l處理高並發(實例程式碼)

不言
不言原創
2018-08-06 14:11:432016瀏覽

這篇文章帶給大家的內容是關於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處理高並發(實例程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn