一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Redis - redis中隊列消息實現應用解耦的方法

redis中隊列消息實現應用解耦的方法

2019-11-16 17:41macccc Redis

這篇文章主要給大家介紹了關于redis中隊列消息實現應用解耦的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

消息隊列的場景

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

過度耦合的缺點:php應用中,過度的耦合使得系統拓展性變弱,聯動性錯誤。

今天我給大家介紹的是利用redis的隊列消息實現模塊間的解耦。

應用場景:用戶在采購模塊下單買了一批貨物回來,簽收時要在倉庫模塊添加相應的庫存,普通的做法就是在簽收完成的時候通過接口給倉庫模塊推送數據執行入庫操作。但是這么做如果倉庫模塊發送錯誤,沒有入庫成功就會導致采購模塊簽收失敗,這就是耦合給系統帶來的缺點。

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

運行。

關鍵點:

1、如果redis服務器掛掉了怎么辦???

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

2、如何實現傳統方式那樣實時入庫啊?

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

訂閱代碼sub.php

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

發布代碼pub.php

?
1
2
3
4
5
<?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);

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.cnblogs.com/maccc/p/9641132.html

延伸 · 閱讀

精彩推薦
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    xiaojin21cen10152021-07-27
  • RedisRedis如何實現數據庫讀寫分離詳解

    Redis如何實現數據庫讀寫分離詳解

    Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面這篇文章主要給大家介紹了關于Redis如何實現數據庫讀寫分離的相關資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

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

    這篇文章主要給大家介紹了關于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具...

    一線碼農5812019-11-18
  • RedisRedis全量復制與部分復制示例詳解

    Redis全量復制與部分復制示例詳解

    這篇文章主要給大家介紹了關于Redis全量復制與部分復制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis爬蟲具有一定的參考學習...

    豆子先生5052019-11-27
  • Redis詳解Redis復制原理

    詳解Redis復制原理

    與大多數db一樣,Redis也提供了復制機制,以滿足故障恢復和負載均衡等需求。復制也是Redis高可用的基礎,哨兵和集群都是建立在復制基礎上實現高可用的...

    李留廣10222021-08-09
  • RedisRedis 事務知識點相關總結

    Redis 事務知識點相關總結

    這篇文章主要介紹了Redis 事務相關總結,幫助大家更好的理解和學習使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • Redisredis實現排行榜功能

    redis實現排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • RedisRedis的配置、啟動、操作和關閉方法

    Redis的配置、啟動、操作和關閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
主站蜘蛛池模板: a级黄色网 | 日韩在线第一区 | 俄罗斯伦理片 | a免费看 | 香蕉久久一区二区不卡无毒影院 | 黑白配高清hd在线视频 | 免费一级毛片在线播放放视频 | 青青操在线播放 | 韩国美女被的免费视频 | 欧美一区二区三区四区五区六区 | 国产在线影院 | 亚洲日韩中文字幕一区 | 国产精品永久免费视频观看 | 成人免费视频一区二区 | 亚洲入口 | 我的好妈妈7中字在线观看韩国 | 国产美女下面流出白浆视频 | 四虎最新永久免费视频 | 欧美添下面视频免费观看 | tube8老师| 久久re热在线视频精99 | 青青视频国产依人在线 | 青青草99| 香蕉91视频| videos变态极端 | videosxxxx老女人 | 天堂在线观看中文字幕 | 亚洲高清无在码在线电影 | 办公室强行丝袜秘书啪啪 | 国产99视频精品免视看7 | 91精品国产91久久久久久麻豆 | 91大片淫黄大片在线天堂 | 国产一久久香蕉国产线看观看 | 草莓丝瓜芭乐樱桃榴莲色多黄 | 91麻豆精东果冻天美传媒老狼 | 久久久高清国产999尤物 | 白发在线视频播放观看免费 | 香蕉国产成版人视频在线观看 | 日本精品vide·ssex日本 | 2021国产麻豆剧传媒剧情 | www四虎影视 |