一、實(shí)驗(yàn)環(huán)境
ubuntu、php、apache或nginx、mysql
二、需求
現(xiàn)在有一個(gè)接口可能會(huì)出現(xiàn)并發(fā)量比較大的情況,這個(gè)接口使用php寫的,做的功能是接收 用戶的GET請(qǐng)求中的name字段,然后將這個(gè)字段存到mysql中,現(xiàn)在先將數(shù)據(jù)放到redis的隊(duì)列中,然后讓redis定時(shí)將這些數(shù)據(jù)轉(zhuǎn)移到mysql中。
二、實(shí)現(xiàn)步驟
1.新建數(shù)據(jù)庫(kù)test及 數(shù)據(jù)表test,建表語句如下
CREATE TABLE `test` ( `name` varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf-8
1.在/var/www/test中新建index.php,內(nèi)容如下,并配置html' target='_blank'>虛擬主機(jī)使其可訪問到。
?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文件,注意修改其中的數(shù)據(jù)庫(kù)密碼等配置,內(nèi)容如下
?php$redis = new Redis();$redis- pconnect( 127.0.0.1 ,6379);$mysql=mysqli_connect( localhost , root , bnm mysqli_select_db($mysql, test ) or die( 不能選擇數(shù)據(jù)庫(kù) 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.運(yùn)行redis.php腳本文件
nohup php redis.php
4.訪問index.php腳本文件,如:http://192.168.116.128/?name=33,然后查看數(shù)據(jù)是否已經(jīng)到mysql中。
相關(guān)文章推薦:
php數(shù)組函數(shù)有哪些操作?php數(shù)組函數(shù)的應(yīng)用(附代碼)
thinkphp5框架與Android實(shí)現(xiàn)二維碼的生成代碼
以上就是php+redis+mysq如何l處理高并發(fā)(實(shí)例代碼)的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選