Redis 發佈訂閱

来源:https://www.cnblogs.com/chy18883701161/archive/2019/06/25/11086614.html
-Advertisement-
Play Games

Redis 發佈訂閱(pub/sub)是一種消息通信模式:發送者(pub)發送消息,訂閱者(sub)接收消息。 pub即publish,推送。 sub即subscribe,訂閱。 訂閱者訂閱某個channel(頻道),發佈者將消息發佈到Redis伺服器,Redis伺服器將消息推送給這個頻道的訂閱者。 ...


 

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

pub即publish,推送。

sub即subscribe,訂閱。

 

 

訂閱者訂閱某個channel(頻道),發佈者將消息發佈到Redis伺服器,Redis伺服器將消息推送給這個頻道的訂閱者。

channel  管道、通道、頻道。

 

 

 

Redis的channel是公共頻道,誰都可以發佈消息。

就像微信群、QQ群,誰都可以發送消息,群成員(訂閱者)都會收到消息。

 

Redis的消息是線上即時消息,類似於廣播,只有線上的訂閱者(連接到Redis伺服器的訂閱者),才會收到消息。

若當時不線上,並不會收到消息。後面登陸了(連接到伺服器),伺服器也不會推送之前(這個客戶端未收到)的消息。伺服器只推送一遍。

 

 

 

 

使用示例

1、啟動一個客戶端,連接到伺服器

 redis-cli -a password 

 

2、訂閱頻道

 subscribe channel1 channel2 .....     //可訂閱一個或多個頻道

 

 

會顯示訂閱的頻道的信息,一個頻道顯示3個條目:

(1)"subscribe"      //固定的值,表示這是一個訂閱頻道

(2)訂閱的頻道名

(3)一個int型的數,表示這個頻道是當前客戶端訂閱的第幾個頻道

 

訂閱之後,當前命令提示符會阻塞,只能接收Redis伺服器推送的消息,不能再執行命令。所以我們再啟動一個客戶端推送消息。

 

3、在另一個Redis客戶端推送消息

 publish channel message    //channel指定要推送消息到哪個頻道,message是要推送的消息

返回當前接收到消息的訂閱者的數量。1表示只有一個訂閱者收到了這條消息。

 

我們看到另一個客戶端已接收到消息。一條消息顯示3個項:

(1)“message”   //固定值,表示這是一條消息

(2)這條消息來自哪個訂閱頻道

(3)消息內容

 

 

Redis的訂閱是臨時訂閱,只在本次連接期間有效。斷開連接後,會清除這個客戶端的訂閱信息,即取消所有訂閱的頻道。

 

誰都可以是發佈者,誰都可以發送消息。可以向任何頻道發送消息。

 

 

 

 

相關命令

1、subscribe  channel1  channel2  ......      //訂閱一個或多個頻道

 

2、unsubscribe  channel1  channel2  .......    //退訂一個或多個頻道。多了un

 

 

3、psubscribe  pattern1  pattern2  .....     //多了一個p,即pattern,訂閱該模式匹配的所有頻道,可以有多個匹配模式。

示例:

 psubscribe tv     //訂閱頻道tv

 psubscribe *home    //訂閱所有以home結尾的頻道

 psubscribe china*    //訂閱所有以china開頭的頻道

 

4、punsubscribe  pattern1  pattern2  .....     //退訂符合匹配的所有頻道,可指定多個匹配模式,滿足pattern1或者滿足pattern2.....,,註意是或。

 

 

5、publish  channel  message   //推送消息到某個頻道

 

紅色的命令是常用的。

 

 

 

很多書籍、教程中,關鍵字都使用全大寫,這樣做是為了好區分關鍵字。其實關鍵字是大小寫等價的。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 引用:https://baijiahao.baidu.com/s?id=1600687025749463237&wfr=spider&for=pc 參考下圖,正向代理用途:Client無法直接訪問Server,比如谷歌翻牆,於是請求發送給代理,代理可以訪問Server並將其返回信息返回給Client ...
  • 首先添加 Nuget包 MongoDB.Driver 創建一個Model。 與Mongodb建立連接: 增刪改查: ...
  • 工作中有的時候需要將某個庫中的表、視圖、函數、存儲過程等創建語句導出,又不需要表中的數據。同時最好放在同一個文件裡面,這樣方便拷貝。 方法一:需要拷貝的創建語句條數不多,不至於讓你拷到頭腦發暈的地步,你可以選擇直接拷貝DDL語句 方法二:使用Navicat的備份功能 1.新建備份 2.按需勾選待備份 ...
  • 偽分散式模式等同於完全分散式,只是她只有一個節點。 一) HDFS上運行MapReduce 程式 (1)配置集群 (a)配置:hadoop-env.sh Linux系統中獲取jdk的安裝路徑: 修改JAVA_HOME 路徑: (b)配置:core-site.xml 原始該文件內容 配置後該文件內容 ...
  • Hadoop的本地模式為Hadoop的預設模式,不需要啟用單獨進程,直接可以運行,測試和開發時使用。 在《啃掉Hadoop系列筆記(02)-Hadoop運行環境搭建》中若環境搭建成功,則直接可以使用本地模式。 在這裡我們運行官方的兩個案例 1、官方grep案例 1)在hadoop-2.7.2文件夾下 ...
  • 使用orachk工具檢查資料庫實例的時候,發現報告裡面有類似下麵這樣一些錯誤(最近有給Oracle 10g應用補丁PSU 10.2.0.5.180717,不清楚是這個產生的還是其他原因導致),使用腳本檢查,發現有很多INVALID對象(具體參考[轉載]—Health Check Reports Pr... ...
  • Oracle Label Securit簡介 Oracle Label Security是內置於資料庫引擎中的過程與約束條件集,該數據引擎實施對在單個表或整個模式上的"行"級訪問控制。要利用Oracle Label Security,需要創建一個或多個安全策略,其中每一個安全策略都包含一組標簽。你可... ...
  • mysql登錄:方法1:使用Command Line Client登錄,缺點:不顯示報錯信息 方法2:使用cmd登錄(cmd的常用:查看ip地址:ipcongfi 定時關機:shutdown -s -t 10800,3小時=180分鐘=180*60秒=10800秒)1.切換到mysql\bin目錄下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...