国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于Redis消息隊列實現(xiàn)的消息推送

endiat / 2255人閱讀

摘要:基于消息隊列實現(xiàn)的消息推送基本知識點重點用到了以下命令實現(xiàn)我們的消息推送阻塞模式從隊列右邊獲取值之后刪除從隊列的右邊取值之后刪除,從左側(cè)放置到隊列中邏輯分析在普通的任務(wù)腳本中寫入隊列要發(fā)送消息的目標,并為目標設(shè)置一個要推送的內(nèi)容,永不過期中

基于Redis消息隊列實現(xiàn)的消息推送 基本知識點

重點用到了以下命令實現(xiàn)我們的消息推送

brpop 阻塞模式 從隊列右邊獲取值之后刪除

brpoplpush 從隊列A的右邊取值之后刪除,從左側(cè)放置到隊列B中

邏輯分析

在普通的任務(wù)腳本中寫入push_queue隊列要發(fā)送消息的目標,并為目標設(shè)置一個要推送的內(nèi)容,永不過期

RedisPushQueue中brpoplpush處理,處理后的值放到temp_queue,主要防止程序崩潰造成推送失敗

RedisAutoDeleteTempqueueItems處理temp_queue,這里用到了brpop

代碼實現(xiàn)

普通任務(wù)腳本

lPush("push_queue",$k_name);//左進隊列
    $redis->set($k_name, "推送內(nèi)容");
}

RedisPushQueue

connect("127.0.0.1", 6379);
$redis->select(2);//切換到db2
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);

// temp_queue臨時隊列防止程序崩潰導致隊列中內(nèi)容丟失 0代表永不超時!
While ($key = $redis->brpoplpush("push_queue", "temp_queue", 0)) {
    if ($val = $redis->get($key)) {
        //rabbit_push_20_175990
        $arr = explode("_", $key);
        if (count($arr) != 4) {
            continue;
        }
        $id = $arr[2];
        push($id, $val);
        //刪除key內(nèi)容
        $redis->del($key);
    }  
}
function push($id, $v)
{
  //推送操作~
}

RedisAutoDeleteTempqueueItems

connect("127.0.0.1", 6379);
$redis->select(2);//切換到db2
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
    while($key_arr = $redis->brPop("temp_queue",0)){
    if(count($key_arr) != 2){
        continue;
    }
    $key =$key_arr[1];
    if($redis->get($key)){//能獲取到值 說明RedisPushQueue執(zhí)行失敗
        $redis->lPush("push_queue",$key);
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/29697.html

相關(guān)文章

  • laravel 隊列

    摘要:如果任務(wù)沒有在規(guī)定時間內(nèi)完成,那么該有序集合的任務(wù)將會被重新放入隊列中。這兩個進程操縱了三個隊列,其中一個,負責即時任務(wù),兩個,負責延時任務(wù)與待處理任務(wù)。如果任務(wù)執(zhí)行成功,就會刪除中的任務(wù),否則會被重新放入隊列中。 在實際的項目開發(fā)中,我們經(jīng)常會遇到需要輕量級隊列的情形,例如發(fā)短信、發(fā)郵件等,這些任務(wù)不足以使用 kafka、RabbitMQ 等重量級的消息隊列,但是又的確需要異步、重試...

    BDEEFE 評論0 收藏0
  • App后臺api開發(fā)前準備

    摘要:負責從拉取數(shù)據(jù)源,把數(shù)據(jù)源分詞,建立索引搜索模塊工作流程如下模塊從中拉取數(shù)據(jù)模塊用經(jīng)過中文分詞后的數(shù)據(jù)建立索引客戶端向模塊發(fā)起搜索請求模塊查找索引中的數(shù)據(jù)模塊得到索引中符合要求的數(shù)據(jù)的等數(shù)據(jù)把數(shù)據(jù)返回給客戶端 (整理自《App后臺開發(fā)運維和架構(gòu)實踐》 作者:曾健生) 一、從業(yè)務(wù)邏輯中提煉API接口 此過程可分為六個階段: 業(yè)務(wù)邏輯思維導圖 功能——業(yè)務(wù)邏輯思維導圖 基本功能模塊關(guān)系 ...

    yzzz 評論0 收藏0
  • App后臺api開發(fā)前準備

    摘要:負責從拉取數(shù)據(jù)源,把數(shù)據(jù)源分詞,建立索引搜索模塊工作流程如下模塊從中拉取數(shù)據(jù)模塊用經(jīng)過中文分詞后的數(shù)據(jù)建立索引客戶端向模塊發(fā)起搜索請求模塊查找索引中的數(shù)據(jù)模塊得到索引中符合要求的數(shù)據(jù)的等數(shù)據(jù)把數(shù)據(jù)返回給客戶端 (整理自《App后臺開發(fā)運維和架構(gòu)實踐》 作者:曾健生) 一、從業(yè)務(wù)邏輯中提煉API接口 此過程可分為六個階段: 業(yè)務(wù)邏輯思維導圖 功能——業(yè)務(wù)邏輯思維導圖 基本功能模塊關(guān)系 ...

    laoLiueizo 評論0 收藏0

發(fā)表評論

0條評論

endiat

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<