成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

endiat / 2264人閱讀

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

基于Redis消息隊(duì)列實(shí)現(xiàn)的消息推送 基本知識(shí)點(diǎn)

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

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

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

邏輯分析

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

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

RedisAutoDeleteTempqueueItems處理temp_queue,這里用到了brpop

代碼實(shí)現(xiàn)

普通任務(wù)腳本

lPush("push_queue",$k_name);//左進(jìn)隊(duì)列
    $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臨時(shí)隊(duì)列防止程序崩潰導(dǎo)致隊(duì)列中內(nèi)容丟失 0代表永不超時(shí)!
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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29697.html

相關(guān)文章

  • laravel 隊(duì)列

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

    BDEEFE 評(píng)論0 收藏0
  • App后臺(tái)api開發(fā)前準(zhǔn)備

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

    yzzz 評(píng)論0 收藏0
  • App后臺(tái)api開發(fā)前準(zhǔn)備

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

    laoLiueizo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<