發佈訂閱模式又叫觀察者模式,它定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,全部依賴它的對象都將獲得通知python
Redis 發佈訂閱(pub/sub)是一種消息通訊模式:發送者(pub)發送消息,訂閱者(sub)接收消息。redis
Redis 客戶端能夠訂閱任意數量的頻道。編程
下圖展現了頻道 channel1 , 以及訂閱這個頻道的三個客戶端 —— client2 、 client5 和 client1 之間的關係:架構
當有新消息經過 PUBLISH 命令發送給頻道 channel1 時, 這個消息就會被髮送給訂閱它的三個客戶端:異步
一、用於異步編程,取代傳遞迴調函數的方案分佈式
二、讓兩個對象鬆耦合地聯繫在一塊兒,一個對象再也不顯式地調用另外一個對象的接口異步編程
發佈者:函數
# -*- coding:utf-8 -*- # Author : liuqingzheng # Data : 2018/11/23 19:17 import redis conn=redis.Redis(host='127.0.0.1',port=6379) # 頻道,發佈內容 conn.publish('98k','hello world')
訂閱者:網站
# -*- coding:utf-8 -*- # Author : liuqingzheng # Data : 2018/11/23 19:20 import redis conn=redis.Redis(host='127.0.0.1',port=6379) # 拿到發佈者對象 pub=conn.pubsub() # 訂閱頻道 pub.subscribe('98k') # 能夠訂閱多個頻道 # pub.subscribe('998') # 循環等待 while True: # 接收到消息,解析響應 msg=pub.parse_response() print(msg)
1 構建實時消息系統,好比普通的即時聊天,羣聊等功能spa
2 在咱們的分佈式架構中,經常會遇到讀寫分離的場景,在寫入的過程當中,就能夠使用redis發佈訂閱,使得寫入值及時發佈到各個讀的程序中,就保證數據的完整一致性
3 在一個博客網站中,有100個粉絲訂閱了你,當你發佈新文章,就能夠推送消息給粉絲們