Maison  >  Article  >  base de données  >  Comment implémenter l'abonnement et la publication Redis à l'aide du mécanisme de sous-publication en python

Comment implémenter l'abonnement et la publication Redis à l'aide du mécanisme de sous-publication en python

王林
王林avant
2023-05-26 18:55:28891parcourir

Présentez d'abord la fonction pub/sub de redis :

La fonctionnalité Pub/Sub, qui signifie Publier et S'abonner, fait référence à la fonctionnalité de publication et d'abonnement. Dans les systèmes basés sur les événements, Pub/Sub est actuellement un modèle de communication largement utilisé. Il utilise les événements comme mécanisme de communication de base pour fournir un modèle d'interaction faiblement couplé requis par les systèmes à grande échelle : les abonnés (tels que les clients) s'abonnent aux événements. La méthode exprime un événement ou un type d'événement qu'elle souhaite recevoir ; l'éditeur (tel que le serveur) peut informer les abonnés concernés à tout moment des événements qui l'intéressent.

En termes simples, cela signifie que mon sous-côté (abonné) est toujours à l'écoute. Une fois que le côté pub (éditeur) publie un message, je le recevrai par exemple, d'abord l'éditeur :

#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

Ensuite. fais-le Jetez un œil aux abonnés :

#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']

À propos de la structure des données, c'est-à-dire l'élément, elle est similaire à : {'pattern' : Aucun, 'type' : 'message', 'channel' : 'liao', 'data': '300033 1 '}De cette façon, vous pouvez utiliser le canal pour déterminer à quelle file d'attente appartient le message. (Lors de l'exécution du programme, exécutez d'abord l'abonné, puis exécutez le programme éditeur)

Pour résumer, il y a deux points principaux :

  • Le premier est la méthode de connexion. Il existe trois façons d'utiliser Python pour se connecter à Redis : ① Utilisez la classe Redis dans la bibliothèque (ou la classe StrictRedis, qui est presque la même) ② Utilisez le pool de connexions ConnectionPool (qui peut maintenir des connexions longues) ; Classe Sentinel (s'il existe plusieurs clusters Redis, le programme choisira lui-même une connexion appropriée).

  • La seconde est la méthode d'abonnement. La méthode pubsub de la classe StrictRedis est utilisée ici. La façon de s'abonner aux messages Redis consiste à utiliser la méthode d'abonnement ou psubscribe, qui démarre une fois la connexion réussie. Là où s'abonner consiste à s'abonner à une chaîne, psubscribe peut s'abonner à plusieurs chaînes (lorsqu'il est écrit ainsi, la chaîne en tant que paramètre doit être une liste). Ensuite, vous pouvez commencer la surveillance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer