python 实现redis订阅发布功能
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。也能实现订阅发布系统,我们来看看怎样用redis和python结合起来进行订阅发布的,
import redis
class RedisSubscri():
def __init__(self,host):
self.coon=redis.Redis(host="127.0.0.1")
def publish(self,message,channel):#发布
self.coon.publish(channel,message)
def subscribe(self,channel):#订阅
pub=self.coon.pubsub()
pub.subscribe(channel)
pub.parse_response()
return pub
def unsubsceribe(self,channel):#取消订阅
self.coon.pubsub().unsubscribe(channel)
核心的代码就是上面的 简单封装后就可以使用。
发布端
redisd=RedisSubscri(host='127.0.0.1')
while True:
n=input("请输入你要发布的频道:")
m=input("请输入你要发布的消息:")
redisd.publish(m,n)
订阅端
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from dingyue import RedisSubscri
if __name__=="__main__":
resad = RedisSubscri(host='127.0.0.1')
meaaag = resad.subscribe('1')
while True:
print('监听开始')
meaaage=meaaag.parse_response()
print(meaaage[2].decode('utf-8'))
if meaaage[2].decode('utf-8')=='1':
m=meaaag.unsubscribe('fm9.01')
print(m)
print('取消订阅成功')
break
那么我们来运行下,上述的代码,看是否能够实现登录订阅功能,并且实现退订功能。
发布端:
订阅端
我们在上面的代码中定义了,当接受消息为1的时候,我们就取消订阅,
取消订阅后就无法订阅系统的消息了,所以输出来是None。
这样就利用python 和redis实现了订阅发布的功能,其实在很多地方都可以用到redis的,深入研究在后续的文章中会介绍。