摘要:二實現步驟新建數據庫及數據表,建表語句如下在中新建內容如下,并配置虛擬主機使其可訪問到。
一、實驗環境
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,內容如下,并配置虛擬主機使其可訪問到。
connect("127.0.0.1", 6379); try { $res = $redis->LPUSH("name", $_REQUEST["name"]); } catch (Exception $e) { echo $e->getMessage(); }
2.在相同的目錄下新建redis.php文件,注意修改其中的數據庫密碼等配置,內容如下
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中。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29172.html
摘要:獲取消息隊列中的腳本,拼接,批量入庫。批量入庫腳本天級統計腳本總結相對于其他復雜的方式處理高并發,這個解決方案簡單有效通過緩存抗壓,批量入庫解決數據庫瓶頸,離線計算解決統計數據,通過定期清理保證庫的大小。 需求背景:有個調用統計日志存儲和統計需求,要求存儲到mysql中;存儲數據高峰能達到日均千萬,瓶頸在于直接入庫并發太高,可能會把mysql干垮。 問題分析 思考:應用網站架構的衍化過...
閱讀 3096·2021-02-22 17:12
閱讀 719·2019-08-30 15:55
閱讀 3079·2019-08-30 15:54
閱讀 1384·2019-08-29 16:56
閱讀 1862·2019-08-29 15:13
閱讀 1716·2019-08-29 13:19
閱讀 601·2019-08-26 13:40
閱讀 2822·2019-08-26 10:26