Redis之發佈訂閱

一 什麼是發佈訂閱

 發佈訂閱模式又叫觀察者模式,它定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,全部依賴它的對象都將獲得通知python

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

Redis 客戶端能夠訂閱任意數量的頻道。編程

下圖展現了頻道 channel1 , 以及訂閱這個頻道的三個客戶端 —— client2 、 client5 和 client1 之間的關係:架構

pubsub1

當有新消息經過 PUBLISH 命令發送給頻道 channel1 時, 這個消息就會被髮送給訂閱它的三個客戶端:異步

pubsub2

二 發佈訂閱模式的做用

    一、用於異步編程,取代傳遞迴調函數的方案分佈式

    二、讓兩個對象鬆耦合地聯繫在一塊兒,一個對象再也不顯式地調用另外一個對象的接口異步編程

三 python+Redis實現發佈訂閱

發佈者:函數

# -*- 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個粉絲訂閱了你,當你發佈新文章,就能夠推送消息給粉絲們

相關文章
相關標籤/搜索