一、實驗環境
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,內容如下,并配置html' target='_blank'>虛擬主機使其可訪問到。
?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中。
相關文章推薦:
thinkphp5框架與Android實現二維碼的生成代碼
以上就是php+redis+mysq如何l處理高并發(實例代碼)的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答