天天看點

Redis精通系列——Pub/Sub(釋出訂閱)

  本文已收錄于專欄

《Redis精通系列》

上千人點贊收藏,全套Redis學習資料,大廠必備技能!

目錄

1、簡介

2、執行個體示範

2.1 普通訂閱

2.2 模式訂閱

3、Pub/Sub為什麼被抛棄

李子捌把話說在前頭,如果你是面試或者為了了解知識來學習這一知識點,我覺得是有必要的;但是如果你是作為公司的技術負責人或者項目技術選型來使用Redis的Pub/Sub做消息的釋出訂閱,如果你不是走投無路了,那麼你可能值得斟酌一下。Redis的Pub/Sub釋出訂閱,是Redis一步步完善消息隊列功能的一個進步點,雖然現在沒人用Pub/Sub做消息隊列,但是它的思想和功能也是值得玩一下的,這個就是我寫這篇文章的主要原因。

Redis 釋出訂閱 (pub/sub) 是一種消息通信模式:發送者 (pub) 發送消息,訂閱者 (sub) 接收消息。

pub -> publisher

sub -> subscriber

Redis用戶端訂閱一個頻道非常簡單,它可以訂閱任意數量的頻道。

如下圖,Redis用戶端訂閱(subscriber)頻道(channel)

Redis精通系列——Pub/Sub(釋出訂閱)
Redis精通系列——Pub/Sub(釋出訂閱)
Redis精通系列——Pub/Sub(釋出訂閱)
Redis精通系列——Pub/Sub(釋出訂閱)
Redis精通系列——Pub/Sub(釋出訂閱)
Redis精通系列——Pub/Sub(釋出訂閱)

關于Redis的Pub/Sub為什麼被抛棄,最主要的原因是它無法持久化,沒有實作持久化機制的Pub/Sub,無法做到消息的不丢失,在用戶端當機或者Redis服務當機的情況下,都會導緻消息丢失。

用戶端當機,用戶端無法接收消息

Redis服務當機,沒有用戶端能連接配接上,肯定也無法接收到消息

大部分情況下,我們都不會用到Redis去做消息中間件,市面上成熟且好用的消息中間件非常多,如果真的需要使用Redis來做消息中間件,可以考慮Redis 5.0的新資料結構Stream,這個功能在Pub/Sub的基礎上,實作了持久化機制,并且大力借鑒了kafka的設計原理,完善了Redis用于實作消息隊列的不足之處。

關于stream的知識點,請檢視我的Redis專欄!

繼續閱讀