前言
現(xiàn)在越來越多的網(wǎng)站開始注重統(tǒng)計和用戶行為分析,作為網(wǎng)站經(jīng)常使用的功能,如何讓統(tǒng)計性能更加高,這也是我們需要考慮的事情。本篇通過Redis來優(yōu)化統(tǒng)計功能(以注冊人數(shù)統(tǒng)計為例)。
傳統(tǒng)的統(tǒng)計功能都是直接操作數(shù)據(jù)庫把數(shù)據(jù)插入表中。這樣做,對數(shù)據(jù)庫的性能消耗就會比較大。
思路:
這里我們用到了redis的隊列,注冊的時候先添加到隊列,然后在處理的時候出隊,并且把人數(shù)添加redis里。
代碼:
?php //register.php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $i=0; while(true){ $i++; //假定一直有人在注冊 $redis->rpush("register_success",$i); }
?php //deal.php $redis = new Redis(); $redis->connect('127.0.0.1',6379); while (true) { //list類型出隊操作 $value = $redis->lpop('register_success'); if($value){ echo "deal value : ".$value; //自增 添加注冊人數(shù)統(tǒng)計 如果key不存在 則會初始化為0 $redis->incr('register_num'); }else{ echo "deal finish"; } }
以上這篇PHP+Redis 消息隊列 實現(xiàn)高并發(fā)下注冊人數(shù)統(tǒng)計的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。