您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 redis發布訂閱和stream(Redis和ActiveMQ之間是怎么交互的)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-08 07:11:19【】6人已围观
简介Redis發布訂閱和Stream發布訂單系統是日常開發中經常會用到的功能。簡單來說,就是發布者發布消息,訂閱者就會接受到消息并進行相應的處理,如下圖所示。Redis為我們提供了發布/訂閱的功能模塊Pu
Redis發布訂閱和Stream
發布訂單系統是日常開發中經常會用到的功能。簡單來說,就是發布者發布消息,訂閱者就會接受到消息并進行相應的處理,如下圖所示。
Redis為我們提供了發布/訂閱的功能模塊PubSub,可以用于消息傳遞。
其中發布者publisher、訂閱者subscriber都是redis客戶端,channel則是redis服務器。
發布者publisher向channel發送消息,訂閱該channel的subscriber就會接收到消息。
發布消息publish
訂閱test1、test2的客戶端會收到消息
按照上述這種方式,如果 訂閱者subscriber想要訂閱多個channel 則需要同時指定多個channel的名稱,redis為了解決這個問題提供 psubscribe模式匹配 這種訂閱方式,可以通過通配符的方式匹配頻道。
發布消息
之前訂閱ch*的客戶端就會收到cha頻道和買粉絲頻道的消息,這樣就一次性訂閱多個頻道
redis服務端存儲了訂閱頻道/模式的客戶端列表
相當于如果客戶端訂閱一個頻道 ,那么服務端的 pubsub_channels 就會存儲一條數據, pubsub_channels 其實是一個鏈表,key對應channel,value對應客戶端列表,根據key訂閱的頻道,就可以找到訂閱該頻道的所有客戶端。
同時如果客戶端訂閱一個模式 , pubsub_patterns 也會新增一條數據,記錄當前客戶端訂閱的模式, pubsub_patterns 也有自己的數據結構,其中就包含了客戶端以及模式。
當發布者向某個頻道發布消息時,就會遍歷 pubsub_channels 找到訂閱該頻道的客戶端列表,依次向這些客戶端發送消息。
然后遍歷 pubsub_patterns 找到符合當前頻道的模式,同時找到模式對應的客戶端,然后向客戶端發送消息。
雖然Redis提供了發布/訂閱的功能,但是并不完善,導致基本沒有合適的場景能夠使用。
PubSub缺點:
直到Redis5.0出現之后,出現了Stream這種數據結構,才終于完善了Redis的消息機制 。
Stream實際上就是一個消息列表,只是他幾乎實現了消息隊列所需要的所有功能,包括:
同時需要注意的是Stream只是一個數據結構,他不會主動把消息推送給消費者,需要消費者主動來消費數據 。
每個Stream都有唯一的名稱,它就是Redis的key,首次使用 xadd 指令追加消息時自動創建。
常見操作命令如下表:
如果客戶端希望知道自身消費到第幾條數據了,那么就需要記錄一下當前消費的消息ID,下次再次消費的時候就從上次消費的消息ID開始讀取數據即可。
消費組中多了一個游標 last_delivered_id ,表示當前消費到了哪一條數據。同時所有的數據都是待處理消息( PEL ),只有消費者處理完畢之后使用 ack 指令告知redis服務器,數據才會從 PEL 中移除,確認后的消息就無法再次消費。
如果接收到的消息比較多,為了避免Stream過長,可以選擇指定Stream的最大長度,一旦到達了最大長度,就會從最早的消息開始清除,保證Stream中最新的消息。
Redis Stream類型的使用
最近在看 redis 這方面的知識,發現在 redis5 中產生了一種新的數據類型 Stream ,它和 kafka 的設計有些類似,可以當作一個簡單的消息隊列來使用。
解釋:
xadd 命令 返回的是數據的id, xx-yy (xx指的是毫秒數,yy指的是在這個毫秒內的第幾條消息)
指定指定Stream的大小比模糊指定Stream的大小會稍微多少消耗一些性能。
~ 模糊指定流的大小,可以看到指定的是1,實際上已經到了3.
使用redis的事務操作,獲取到同一毫秒產生的多條數據,時間戳一樣,序列號不一樣
-: 表示最小id的值
+: 表示最大id的值
(: 表示開區間
直接寫 毫秒 不寫后面的序列號即可。
start 和 end 的值寫的一樣即可獲取單挑數據。
使用 買粉絲unt 進行限制
使用方式和 XRANGE 類似,略。
需求: 往Stream中加入3條消息,然后刪除第2條消息
注意:
需要注意的是,我們從Stream中刪除一個消息,這個消息并不是被真正的刪除了,而是被 標記為刪除 ,這個時候這個消息還是占據著內容空間的。如果所有Stream中所有的消息都被標記刪除,這個時候才會回收內存空間。但是這個Stream并不會被刪除。
查看Stream中元素的長度
注意:
如果 xlen 后方的 key 不存在則返回0,否則返回元素的個數。
上方的意思是,保留 stream-key 這個Stream中最后的2個消息。
minid 是刪除比這個id小的數據,本地測試的時候 沒有測試出來 ,略。
XREAD 只是讀取消息,讀取完之后并不會刪除消息。 使用 XREAD 讀取消息,是完全獨立與消費者組的,多個客戶端可以同時讀取消息。
買粉絲unt 限制單次讀取最后的消息,因為當前讀取可能沒有這么多。
即讀取隊列尾的下一個消息,在非阻塞模式下始終是 nil
注意:
1、創建Stream的名稱是 stream-key
2、創建2個消息,aa和bb
$ 表示從最后一個元素消費,不包括Stream中的最后一個元素,即消費最新的消息。
1636362619125-0 某個消息的具體的ID,這個 g3 消費者組中的消息都是 大于> 這個id的消息。
也可以通過 x買粉絲claim 來實現。
Redis和ActiveMQ之間是怎么交互的
為什么會需要用這兩組件交互呢?
Redis,是一個緩存組件,可以提供key/value方式存儲(一般是內存,也可以刷到磁盤上,看需求與調整配置),數據存儲結構基于hash。redis還有另外一種通訊模型,pulish/subscibe(發布/訂閱模型)。連接/操作方式提供了多種編程語言的連接客戶端或者叫驅動。
ActiveMQ,是消息中間件,存儲模型隊列(有序、優先級)等,數據可以刷到磁盤(一般都需要刷到磁盤)。同時也有pulish/subscibe(發布/訂閱模型),主要通信模式,最新的ActiveMQ可能還提供stream(流式處理)處理模式(可能基于發布/訂閱模式,做數據處理,記不太清楚,單中間件比如spring的stream是有這種實現的)。連接/操作方式也提供了多種語言編寫的客戶端/驅動程序。
兩個組件沒有直接交互方式。需要做交互,用兩組件支持的任何語言寫橋接組件。如把redis的數據讀出放到ActiveMQ中。也可以反過來操作。
結論,選擇一種會用的編程語言寫橋接組件操作。
基于Redission使用Redis的Stream
這里,有個group名字叫testGroup31,里面有消費者6個,pending代表目前有6個數據被讀取了,但沒有ack
last_delivered-id代表這個group目前讀到哪條消息
springbootredisstream消費失敗
1、首先默認的隊列監聽是自動確認的,但是如出現異常不會自動確認,默認的失敗機制是不斷重試,這樣會影響mq性能。
2、其次可以在配置文件中指定失敗重試次數和重試間隔。
3、然后配置之后將會按照間隔時間重試三次,重試之后如消息依然沒有發送的話消息將會直接丟棄。
4、最后這樣直接丟棄消息在某些場景下并不合適,所以需要使用到死信隊列,當消息不可達時由死信處理。
大數據分析應該掌握哪些基礎知識?
Java基礎語法
· 分支結構if/switch
· 循環結構for/while/do while
· 方法聲明和調用
· 方法重載
· 數組的使用
· 命令行參數、可變參數
IDEA
· IDEA常用設置、常用快捷鍵
· 自定義模板
· 關聯Tomcat
· Web項目案例實操
面向對象編程
· 封裝、繼承、多態、構造器、包
· 異常處理機制
· 抽象類、接口、內部類
· 常有基礎API、集合List/Set/Map
· 泛型、線程的創建和啟動
· 深入集合源碼分析、常見數據結構解析
· 線程的安全、同步和通信、IO流體系
· 反射、類的加載機制、網絡編程
Java8/9/10/11新特性
· Lambda表達式、方法引用
· 構造器引用、StreamAPI
· jShell(JShell)命令
· 接口的私有方法、Optional加強
· 局部變量的類型推斷
· 更簡化的編譯運行程序等
MySQL
· DML語言、DDL語言、DCL語言
· 分組查詢、Join查詢、子查詢、Union查詢、函數
· 流程控制語句、事務的特點、事務的隔離級別等
JDBC
· 使用JDBC完成數據庫增刪改查操作
· 批處理的操作
· 數據庫連接池的原理及應用
· 常見數據庫連接池C3P0、DBCP、Druid等
Maven
· Maven環
很赞哦!(9)
相关文章
- 04 搭建訂閱轉換網站在線(如何自己建設獨立的B2C商城)
- 04 教師節買粉絲文章標題(教師節海報怎么寫教師節,你收到最美好的祝福是什么)
- 04 youtuber是什么意思英語怎么讀(KUAIZERO里面兩個人什么背景?)
- 04 youtube to mp3 player 買粉絲nverter 買粉絲下載pr插件(視頻可以轉換成音頻(MP3)嗎?)
- 04 youtube to mp3 player 買粉絲 music(2007年影響人類生活的十大IT產品)
- 04 揭陽市陽順汽車貿易有限公司(汽車前擋風玻璃怎么區分進口和國產?)
- 04 youtube.買粉絲.br site(有什么最近的新聞(英語的)?急!!答得好加分!!)
- 04 youtube 買粉絲 to mp3 download app(手機文件哪些可以刪)
- 04 新形勢下國際經濟與貿易的發展趨勢探究(分析國際經濟與貿易的發展趨勢,及受哪些因素影響)
- 04 新昌網紅橋在哪里(新昌東門網紅橋在哪里)
热门文章
站长推荐
04 youtube to mp3 software download(p2p是什么?如何使用?)
04 搭建訂閱轉換網站鏈接免費(一個上班族想干點副業,做什么好呢?)
04 youtube to mp3 online 買粉絲nverter 買粉絲 download chatgpt desktop app(高分懸賞!求一首英文流行歌曲)
04 youtube to mp4 買粉絲 online(網站轉換工具有哪些?)
04 搭建訂閱轉換網站在線聽(網站是怎樣贏利的)
04 youtube to mp4 買粉絲 online(尋一個聽歌的網站)
04 播放量破億的英文歌曲(播放量破600億的歌有哪些)
04 數字經濟與貿易專業可以中央選調嗎(研究生考公務員好考嗎?)