PHP實現redis訊息佇列發布微博的方法

來源:互聯網
上載者:User
這篇文章主要介紹了PHP使用redis訊息佇列發布微博的方法,結合具體執行個體形式分析了php結合redis資料庫操作訊息佇列實現微博發布的相關技巧與注意事項,需要的朋友可以參考下

具體如下:

在一些使用者發布內容應用中,可能出現1秒上萬個使用者同時發布訊息的情況,此時使用mysql可能會出現" too many connections"錯誤,當然把Mysql的max_connections參數設定為更大數,不過這是一個治標不治本的方法。而使用redis的訊息佇列,把使用者發布的訊息暫時儲存在訊息佇列中,然後使用多個cron程式把訊息佇列中的資料插入到Mysql。這樣就有效降低了Mysql的高並發。具體實現原理如下:

現有微博發布介面:

$weibo = new Weibo();$uid = $weibo->get_uid();$content =$weibo->get_content;$time = time();$webi->post($uid,$content,$time);

此方法直接把微博內容寫入Mysql。具體過程省略。

把訊息寫入到redis:

$redis = new Redis(localhost,6379);$redis->connect();$webiInfo = array('uid'=>get_uid(),'content'=>get_content(),'time'=>time());$redis->lpush('weibo_list',json_encode($weiboInfo));$redis->close();

從redis中取出資料:

while(true){   if($redis->lsize('weibo_list') > 0){     $info = $redis->rpop('weibo_list');     $info = json_decode($info);   }else{     sleep(1);   }}$weibo->post($info->uid,$info->content,$info->time);//插入資料的時候可以用一次性插入多條資料的方法,避免迴圈插入,不停的迴圈插入可能會導致死結問題。

提示:可以運行多個cron程式同時把訊息佇列的資料插入到Mysql中,當一台Redis伺服器不能應付大量並發時,使用一致性Hash演算法,把並發分發到不同的Redis伺服器。

相關推薦:

php+redis訊息隊列實現搶購步驟詳解(附代碼)

PHP如何使用redis訊息隊列發布微博

Redis訊息通知系統的實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.