欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

redis中隊(duì)列消息實(shí)現(xiàn)應(yīng)用解耦的方法

 更新時(shí)間:2018年09月13日 16:49:59   作者:macccc  
這篇文章主要給大家介紹了關(guān)于redis中隊(duì)列消息實(shí)現(xiàn)應(yīng)用解耦的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

消息隊(duì)列的場景

我們都知道,消息是在兩臺計(jì)算機(jī)之間傳送的數(shù)據(jù)單位,這個(gè)“消息”可以非常簡單,例如只包含文本字符串,也可以更復(fù)雜,可能包含嵌入對象。而所謂的“消息隊(duì)列”是在消息的傳輸過程中保存消息的容器。在web程序中,可能我們需要將用戶的請求數(shù)據(jù)更新或者添加到數(shù)據(jù)庫中,但是在高炳發(fā)的情況下,雖然作為用戶的我們不知道后臺是什么原因,但是依舊會(huì)抱怨或者吐槽這個(gè)程序反應(yīng)緩慢,比如在過去的幾年里,你有沒有吐槽過12306搶票很難?反應(yīng)很慢?有沒有在使用某個(gè)程序的時(shí)候收到“service is too busy”,而這其實(shí)是因?yàn)楫?dāng)時(shí)的并發(fā)訪問過量,超過了系統(tǒng)的最大負(fù)載能力。當(dāng)然我們可以通過添加服務(wù)器集群中服務(wù)器的數(shù)量來增加程序的負(fù)載能力。

過度耦合的缺點(diǎn):php應(yīng)用中,過度的耦合使得系統(tǒng)拓展性變?nèi)酰?lián)動(dòng)性錯(cuò)誤。

今天我給大家介紹的是利用redis的隊(duì)列消息實(shí)現(xiàn)模塊間的解耦。

應(yīng)用場景:用戶在采購模塊下單買了一批貨物回來,簽收時(shí)要在倉庫模塊添加相應(yīng)的庫存,普通的做法就是在簽收完成的時(shí)候通過接口給倉庫模塊推送數(shù)據(jù)執(zhí)行入庫操作。但是這么做如果倉庫模塊發(fā)送錯(cuò)誤,沒有入庫成功就會(huì)導(dǎo)致采購模塊簽收失敗,這就是耦合給系統(tǒng)帶來的缺點(diǎn)。

解決方案:運(yùn)用php+redis隊(duì)列消息的技術(shù),當(dāng)用戶簽收成功的時(shí)候,把數(shù)據(jù)放入隊(duì)列中,入列成功采購模塊則返回簽收成功的提示給用戶,后續(xù)的操作都不需要采購模塊操心,然后倉庫系統(tǒng)可以通過redis的訂閱發(fā)布模式來進(jìn)行監(jiān)聽,當(dāng)有數(shù)據(jù)入列,則倉庫系統(tǒng)就執(zhí)行入庫邏輯代碼的

運(yùn)行。

關(guān)鍵點(diǎn):

1、如果redis服務(wù)器掛掉了怎么辦?。?/strong>

在采購模塊的簽收邏輯代碼中做判斷,如果入列成功則返回簽收完成,如果入列失敗這運(yùn)行傳統(tǒng)方法,通過接口入庫的方法。如果redis也掛了,倉庫模塊也掛了怎么辦啊,那你就收拾包袱回家吧。

2、如何實(shí)現(xiàn)傳統(tǒng)方式那樣實(shí)時(shí)入庫???

采用redis的訂閱發(fā)布模式就可以解決。訂閱的代碼放在倉庫模塊,發(fā)布的代碼放在采購模塊。

訂閱代碼sub.php

<?php
$redis = new Redis();
$redis->connect('localhost', 6379);
$redis->subscribe(['ruku'], function ($redis, $chan, $msg) {//訂閱入庫頻道   if($msg==2500){   //如果監(jiān)聽到有發(fā)布信息則從隊(duì)列中拿取信息進(jìn)行入庫操作    。。。。。。。  }  
});

發(fā)布代碼pub.php

<?php
$redis = new Redis();
$redis->connect('localhost', 6379);
$order = ['id' => 1, 'name' => '小米6', 'price' => 2499, 'created_at' => '2017-07-14'];$redis->lpush('order',$order);
$redis->publish("ruku", 2500);

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Redis實(shí)現(xiàn)分布式鎖和等待序列的方法示例

    Redis實(shí)現(xiàn)分布式鎖和等待序列的方法示例

    這篇文章主要介紹了Redis實(shí)現(xiàn)分布式鎖和等待序列的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • Redis String 類型和 Hash 類型學(xué)習(xí)筆記與總結(jié)

    Redis String 類型和 Hash 類型學(xué)習(xí)筆記與總結(jié)

    這篇文章主要介紹了Redis String 類型和 Hash 類型學(xué)習(xí)筆記與總結(jié),本文分別對String 類型的一些方法和Hash 類型做了詳細(xì)介紹,需要的朋友可以參考下
    2015-06-06
  • Redis操作相關(guān)命令之查看、停止、啟動(dòng)命令

    Redis操作相關(guān)命令之查看、停止、啟動(dòng)命令

    這篇文章主要介紹了Redis操作相關(guān)命令之查看、停止、啟動(dòng)命令,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 談?wù)凴edis分布式鎖的正確實(shí)現(xiàn)方法

    談?wù)凴edis分布式鎖的正確實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Redis分布式鎖的正確實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 詳解Redis單線程的正確理解

    詳解Redis單線程的正確理解

    這篇文章主要介紹了詳解Redis單線程的正確理解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 基于Redis+Lua腳本實(shí)現(xiàn)分布式限流組件封裝的方法

    基于Redis+Lua腳本實(shí)現(xiàn)分布式限流組件封裝的方法

    這篇文章主要介紹了基于Redis+Lua腳本實(shí)現(xiàn)分布式限流組件封裝,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Redis?存儲對象信息用?Hash?和String的區(qū)別

    Redis?存儲對象信息用?Hash?和String的區(qū)別

    這篇文章主要介紹了Redis存儲對象信息用Hash和String的區(qū)別,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 淺談Redis存儲數(shù)據(jù)類型及存取值方法

    淺談Redis存儲數(shù)據(jù)類型及存取值方法

    這篇文章主要介紹了淺談Redis存儲數(shù)據(jù)類型及存取值方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 提高redis緩存命中率的方法

    提高redis緩存命中率的方法

    在本篇文章里小編給大家整理了關(guān)于怎么提高redis緩存命中率的相關(guān)知識點(diǎn)內(nèi)容,有興趣的朋友們跟著學(xué)習(xí)下。
    2019-06-06
  • redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格詳解

    這篇文章主要給大家介紹了關(guān)于redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10

最新評論