redis--消息隊列

分類

生產者消費模式

發布者訂閱模式

生產者消費模式

在生產者消費者(Producer/Consumer)模式下,上層應用接收到的外部請求后開始處理其當前步驟的操作,在執行完成后將已經完成的操作發送至指定的頻道(channel)當中,并由其下層的應用監聽該頻道并繼續下一步的操作,如果其處理完成后沒有下一步的操作就直接返回數據給外部請求,如果還有下一步的操作就再將任務發布到另外一個頻道,由另外一個消費者繼續監聽和處理。

模式介紹

生產者消費者模式下,多個消費者同時監聽一個隊里,但是一個消息只能被最先搶到消息的消費者消費,即消息任務是一次性讀取和處理,此模式在分布式業務架構中非常常用,比較常用的軟件還有RabbitMQ、Kafka、RocketMQ、ActiveMQ等

?隊列介紹

隊列當中的 消息由不同的生產者寫入也會有不同的消費者取出進行消費處理,但是一個消息一定是只能被取出一次也就是被消費一次

?生產者發布消息

127.0.0.1:6379> lrange channell 0 -1
1) "x2"
2) "x1"
127.0.0.1:6379> lpush channell x3
(integer) 3
127.0.0.1:6379> lpush channell x4
(integer) 4
127.0.0.1:6379> lpush channell x5
(integer) 5

查看隊列所有消息

127.0.0.1:6379> lrange channell 0 -1
1) "x5"
2) "x4"
3) "x3"
4) "x2"
5) "x1"

消費者消費消息

127.0.0.1:6379> rpop channell
"x1"
127.0.0.1:6379> rpop channell
"x2"
127.0.0.1:6379> rpop channell
"x3"
127.0.0.1:6379> rpop channell
"x4"
127.0.0.1:6379> rpop channell
"x5"
127.0.0.1:6379> rpop channell
(nil)
127.0.0.1:6379> 

再次查看隊列消息

127.0.0.1:6379> lrange channell 0 -1
(empty array)

發布者訂閱模式

模式簡介

在發布者訂閱者模式下,發布者將消息發布到指定的channel里面,凡是監聽該channel的消費者都會收到同樣的一份消息,這種模式類似于是收音機的廣播模式,即凡是收聽某個頻道的聽眾都會收到主持人發布的相同的消息內容

此模式常用語群聊天、群通知、群公告等場景。
Subscriber:訂閱者
Publisher:發布者
Channel:頻道

?

?訂閱者監聽頻道

訂閱一個頻道
127.0.0.1:6379> subscribe channel1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel1"
3) (integer) 1
1) "message"訂閱多個頻道
127.0.0.1:6379> subscribe channel1 channel2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel1"
3) (integer) 1
1) "subscribe"
2) "channel2"
3) (integer) 2訂閱匹配頻道
127.0.0.1:6379> psubscribe chann*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "chann*"
3) (integer) 1訂閱所有頻道
127.0.0.1:6379> psubscribe *
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "*"
3) (integer) 1

發布者發布消息

127.0.0.1:6379> publish channel1 test
(integer) 1

驗證消息

127.0.0.1:6379> subscribe channel1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel1"
3) (integer) 1
1) "message"
2) "channel1"
3) "test"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15898.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Chrono Engine學習總結】6-創建自定義場景-6.2-chrono中的光線設置

由于Chrono的官方教程在一些細節方面解釋的并不清楚,自己做了一些嘗試,做學習總結。 上一篇文章中,自己【用sketchup重建了三維場景】,但導入chrono中顏色很不正確,幾乎都是白色的,但也不是完全白色。經過…

IDE上傳本地倉庫到GitHub

IDE上傳本地倉庫到GitHub 1、選擇遠程倉庫平臺2、下載安裝Git3、IDE集成Git4、本地項目上傳GitHub 1、選擇遠程倉庫平臺 1.1、注冊遠程倉庫平臺 常見的遠程倉庫托管平臺有: 1)GitHub 域名:https://github.com 介紹:GitHub是全球最…

Java訂餐系統源碼 springboot點菜系統源碼

Java訂餐系統源碼 springboot點菜系統源碼 源碼下載地址:https://download.csdn.net/download/xiaohua1992/89341358 功能介紹: 前臺登錄:前臺登錄: ①首頁:菜品信息推薦、菜品信息展示、查看更多 ②菜品信息&…

Stanford斯坦福 CS 224R: 深度強化學習 (3)

基于模型的強化學習 強化學習(RL)旨在讓智能體通過與環境互動來學習最優策略,從而最大化累積獎勵。傳統的強化學習方法如Q-learning、策略梯度等,通過大量的試錯來學習值函數或策略,樣本效率較低。而基于模型的強化學習(MBRL)則利用對環境的預測模型來加速學習過程,大大提高了…

參數的本質:詳解 JavaScript 函數的參數

文章導讀:AI 輔助學習前端,包含入門、進階、高級部分前端系列內容,當前是 JavaScript 的部分,瑤琴會持續更新,適合零基礎的朋友,已有前端工作經驗的可以不看,也可以當作基礎知識回顧。 上篇文章…

地理信息系統(GIS)軟件開發

地理信息系統(GIS)軟件開發是一項復雜且系統性很強的工程,涉及空間數據的采集、管理、分析和展示。以下是一個典型的GIS軟件開發流程,包括各個步驟的詳細說明。北京木奇移動技術有限公司,專業的軟件外包開發公司&#…

面向對象------多態

1.多態的定義 通俗來說,當同一種行為或者事情發生在不同的對象上,這些行為或者事情最終得到的結果不同。 注意:多態要發生在繼承的基礎上。 例如:彩色打印機和黑白打印機。 彩色打印機和黑白打印機是不同的對象,但…

詳細分析Element中的MessageBox基本知識(附Demo)

目錄 前言1. 基本知識2. Demo2.1 確認框2.2 警告框2.3 對話框 3. this.$confirm 前言 詳細知識推薦閱讀:詳細分析Element Plus中的ElMessageBox彈窗用法(附Demo及模版) MessageBox則常用于Vue2 1. 基本知識 MessageBox 是 Element UI 提供…

Liunx學習隨筆

Linux學習隨筆 一.前期準備1.安裝Vmware Workstation軟件2.下載linux鏡像3.安裝操作系統 夕陽無限好,只是近黃昏,時隔一年,重新提筆 沒有比腳更遠的路,沒有比人更高的山 一.前期準備 1.安裝Vmware Workstation軟件 下載地址&am…

加載頁面 跳轉 新頁面 vue

通常,我們點頁面上的詳情,或者編輯,需要加載一個新的頁面出來。 vue中加載頁面的方法: 在父頁面中(通常是某個模塊目錄下的index.vue),先寫這行代碼: import AddEditForm from ./…

南京觀海微電子----升壓和降壓模塊電路解析

(一)升壓模塊 1. 如果是交流電壓升壓,那非常簡單,只要選擇變比合適的變壓器就行(1:3和1:4.17); 2. 如果是直流電壓升壓,從12v升到36v也很容易,可選擇用的開關穩壓器很多,例如 :Cs5171.Cs5172.Cs5173.Cs5174.Mc33063.…

SQLAlchemy備忘

orm備忘 upsert,存在及更新,不存在則插入 from sqlalchemy.dialects.mysql import insertinsert_stmt insert(FileModule).values(file_pathpar_dict.file, module_keypar_dict.module_key,module_namepar_dict.module_name, project_idpar_dict.proj…

【調和級數】100321. 優質數對的總數 II

本文涉及知識點 調和級數 質數、最大公約數、菲蜀定理 LeetCode100321. 優質數對的總數 II 給你兩個整數數組 nums1 和 nums2,長度分別為 n 和 m。同時給你一個正整數 k。 如果 nums1[i] 可以被 nums2[j] * k 整除,則稱數對 (i, j) 為 優質數對&#…

[Android]在后臺線程執行耗時操作,然后在主線程更新UI

1.Coroutines(官方推薦) Coroutines 提供了一種輕量級的線程管理方式,使得在后臺線程執行任務和在主線程更新 UI 變得簡單。以下是如何在 Kotlin 中使用 Coroutines 來處理耗時邏輯并更新 UI 的步驟: 添加 Coroutines 依賴: 首…

數據結構·一篇搞定隊列!

hello,大家好啊,肖恩又拖更了,你們聽我狡辯,前段時間有期中考試,so我就沒什么時間寫這個,在這給大家道個歉😭😭😭 我后面一定盡力不拖更 那么接下來,我們來看…

Greenplum使用hbase外部表

概述 GP可以通過pxf協議上的hbase外表功能, 在數據庫中創建外部表,映射hbase table,以直接在gp中訪問 hbase數據,方便將hbase的查詢結果集保留在gp中 hbase端準備 HBase基礎概念: ?HBase 列包含兩個組件&#xff1…

粒子輻照環境中相機鏡頭防護及LabVIEW圖像處理注意事項

在粒子輻照環境測試電路板性能的實驗中,需要對相機鏡頭進行有效防護,同時利用LabVIEW進行圖像識別和處理。本文將討論相機鏡頭防護的關鍵因素和LabVIEW處理過程中的注意事項,包括防輻射材料選擇、輻射屏蔽措施、散熱管理、空間布局及LabVIEW軟…

c++11:左值引用和右值引用《全家桶》

總結一下C11中涉及到左值引用和右值引用的場景。 1 左值引用和右值引用的區別 左值引用 定義:對左值的引用。目的是避免內存拷貝,類似c中的指針,兩個場景:函數傳參、函數返回值。 右值引用 定義:對右值的引用。兩個場景&#…

【機器學習-k近鄰算法-01】 | Scikit-Learn工具包進階指南:機器學習sklearn.neighbors模塊之k近鄰算法實戰

🎩 歡迎來到技術探索的奇幻世界👨?💻 📜 個人主頁:一倫明悅-CSDN博客 ?🏻 作者簡介: C軟件開發、Python機器學習愛好者 🗣? 互動與支持:💬評論 &…

騎行 - 新區永旺出發的環太湖路線

環過好幾次太湖,但對路線都沒太在意,都是跟著別人走的。這次自己制定一個路書,方便下次自己一個人環太湖時使用。 開始是使用高德地圖做路書,只能在PC上做。我用的是網頁版,每次選點太麻煩了。要輸入地址搜索&#xff…