Heim  >  Artikel  >  Datenbank  >  So implementieren Sie Redis-Abonnements und -Veröffentlichungen mithilfe des Sub-Pub-Mechanismus in Python

So implementieren Sie Redis-Abonnements und -Veröffentlichungen mithilfe des Sub-Pub-Mechanismus in Python

王林
王林nach vorne
2023-05-26 18:55:28892Durchsuche

Lassen Sie uns zunächst die Pub/Sub-Funktion von Redis vorstellen:

Die Pub/Sub-Funktion, die für Publish and Subscribe steht, bezieht sich auf die Funktionalität des Veröffentlichens und Abonnierens. In ereignisbasierten Systemen ist Pub/Sub derzeit ein weit verbreitetes Kommunikationsmodell. Es verwendet Ereignisse als grundlegenden Kommunikationsmechanismus, um ein lose gekoppeltes Interaktionsmodell bereitzustellen, das für große Systeme erforderlich ist: Abonnenten (z. B. Clients) abonnieren Ereignisse Die Methode drückt ein Ereignis oder einen Ereignistyp aus, an dessen Empfang der Herausgeber (z. B. der Server) relevante Abonnenten jederzeit über Ereignisse benachrichtigen kann, an denen der Abonnent interessiert ist.

Laienhaft ausgedrückt bedeutet das, dass meine Unterseite (Abonnent) immer zuhört, wenn die Pub-Seite (Herausgeber) eine Nachricht veröffentlicht, dann erhalte ich sie zum Beispiel zuerst :

#coding:utf-8
import time
import redis
 
number_list = ['300033', '300032', '300031', '300030']
signal = ['1', '-1', '1', '-1']
 
rc = redis.StrictRedis(host='***', port='6379', db=3, password='********')
for i in range(len(number_list)):
    value_new = str(number_list[i]) + ' ' + str(signal[i])
    rc.publish("liao", value_new)  #发布消息到liao

Dann werfen wir einen Blick auf die Abonnenten:

#coding:utf-8
import time
import redis
 
rc = redis.StrictRedis(host='****', port='6379', db=3, password='******')
ps = rc.pubsub()
ps.subscribe('liao')  #从liao订阅消息
for item in ps.listen():        #监听状态:有消息发布了就拿过来
    if item['type'] == 'message':
        print item['channel']
        print item['data']

Bezüglich der Datenstruktur, also des Elements, ist es ähnlich wie: {'pattern': None, 'type': ' message', 'channel': 'liao', 'data': '300033 1'}, sodass Sie den Kanal verwenden können, um zu bestimmen, zu welcher Warteschlange die Nachricht gehört. (Wenn Sie das Programm ausführen, führen Sie zuerst den Abonnenten und dann das Herausgeberprogramm aus.)

Zusammenfassend gibt es zwei Hauptpunkte:

  • #🎜🎜 #Erstens die Verbindungsmethode. Es gibt drei Möglichkeiten, Python zum Herstellen einer Verbindung zu Redis zu verwenden: ① Verwenden Sie die Redis-Klasse in der Bibliothek (oder die StrictRedis-Klasse, die fast identisch ist); ② Verwenden Sie den ConnectionPool-Verbindungspool (der lange Verbindungen aufrechterhalten kann). Sentinel-Klasse (wenn mehrere Redis-Cluster vorhanden sind, wählt das Programm selbst eine geeignete Verbindung aus).

  • Die zweite ist die Abonnementmethode. Hier wird die pubsub-Methode in der StrictRedis-Klasse verwendet. Um Redis-Nachrichten zu abonnieren, verwenden Sie die Methode subscribe oder psubscribe, die nach erfolgreicher Verbindung gestartet wird. Während subscribe einen Kanal abonnieren soll, kann psubscribe mehrere Kanäle abonnieren (wenn es so geschrieben wird, sollte der Kanal als Parameter eine Liste sein). Dann können Sie mit der Überwachung beginnen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Redis-Abonnements und -Veröffentlichungen mithilfe des Sub-Pub-Mechanismus in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen