首頁  >  文章  >  後端開發  >  PHP實作redis訊息佇列發布微博的方法

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

墨辰丷
墨辰丷原創
2018-05-21 11:10:271307瀏覽

這篇文章主要介紹了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訊息通知系統的實作

以上是PHP實作redis訊息佇列發布微博的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn