まず、redis の pub/sub 機能を紹介します。
Pub/Sub 機能は、Publish and Subscribe の略で、パブリッシュとサブスクライブの機能を指します。イベント ベースのシステムでは、Pub/Sub は現在広く使用されている通信モデルであり、基本的な通信メカニズムとしてイベントを使用して、大規模システムに必要な疎結合対話モデルを提供します。サブスクライバ (クライアントなど) がイベントをサブスクライブします。メソッドは、受信したいイベントまたはイベントの種類を表現します。パブリッシャ (サーバーなど) は、サブスクライバが関心のあるイベントを、関連するサブスクライバにいつでも通知できます。
平たく言えば、サブ側 (サブスクライバー) が常にリッスンしていることを意味します。パブリッシャー側 (パブリッシャー) がメッセージをパブリッシュすると、私はそれを受信します。たとえば、最初にパブリッシャー:
#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
次に、サブスクライバーを見てみましょう:
#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']
データ構造、つまり項目に関しては、次のようになります: {'pattern': None, 'type': 'message ', 'channel' : 'liao', 'data': '300033 1'} したがって、チャネルを使用してメッセージがどのキューに属しているかを判断できます。 (プログラムを実行するときは、最初にサブスクライバーを実行し、次にパブリッシャー プログラムを実行します)
要約すると、主なポイントは 2 つあります。
1 つ目は接続です。方法。 Python を使用して Redis に接続するには 3 つの方法があります: ① ライブラリの Redis クラス (またはほぼ同じ StrictRedis クラス) を使用する; ② ConnectionPool 接続プールを使用する (長時間の接続を維持できる); ③ Sentinel クラス (複数の Redis クラスターがある場合、プログラム自体が適切な接続を選択します)。
以上がPython でサブパブリッシュメカニズムを使用して Redis サブスクリプションとパブリッシュを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。