python实现redis订阅与发布

      订阅者可以订阅一个或多个频道,发布者向一个频道发送消息后,所有订阅这个频道的订阅者都将收到消息,而发布者也将收到一个数值,这个数值是收到消息的订阅者的数量。

面向过程的方法

#!/usr/bin/python
#coding:utf-8
#服务器端
import redis
import json

r = redis.Redis(host='127.0.0.1',port='6379') #连接redis
p = r.pubsub()        #开启订阅
p.subscribe('6666') #接收订阅的数据,订阅的频道


for item in p.listen(): #读取接收的数据
    # print(item)
    if item['type'] == 'message': #判断数据是否是用户发布的数据
        data = item['data']     #取出用户要发布的数据
        # result = str(data, 'utf-8')
        # result = json.loads(result)
        # print(result)
        print(data)   #打印要发布的数据

        if item['data'] == 'Q' or item['data'] == 'q':
            break;       #退出程序

p.unsubscribe('6666') #关闭频道
print('取消订阅')
# 客户端
#!/usr/bin/py
# coding:utf-8

import redis
r = redis.Redis(host='127.0.0.1', port=6379)  # 连接redis

while True:
    my_input = input("请输入发布内容:")  # 输入发布的内容
    r.publish('6666', my_input)  # 发送到的频道,发布的内容
    if my_input == 'Q' or my_input == 'q':  # 判断用户是否要退出程序
        print('停止发布')
        break;

面向对象的方法

#服务器端
#!/usr/bin/python
#coding:utf-8

import redis

class server(object):
    def __init__(self,ip='127.0.0.1',port=6379,sub='A'):
        self.ip = ip
        self.port = port
        self.connect = redis.Redis(host=self.ip,port=self.port)   #连接redis
        self.sub = sub  #监听频道

    def se(self):
        spub = self.connect.pubsub() #打开订阅
        spub.subscribe(self.sub) #开始监听
        spub.listen() #用户发布的数据
        return spub

x = server()
p = x.se()
for item in p.listen():     #打印接收到的数据
    print(item)
#客户端
#!/usr/bin/python
#coding:utf-8

import redis

class client(object):
    def __init__(self,ip='127.0.0.1',port=6379,pub='A'):
        self.ip = ip
        self.port = port
        self.connect = redis.Redis(host=self.ip,port=self.port)
        self.pub = pub         #连接的频道

    def cl(self,content):
        self.connect.publish(self.pub,content) #频道,发送的数据

x = client()
while True:
    my_input = input('请输入发布内容:')     #发布的数据
    x.cl(my_input)

       个人比较喜欢第二种方法,也推荐各位朋友使用第二种方法,第二种方法中没有对接收到的数据进行过多的处理,如果喜欢可以拿去自行修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值