好久没写博客了。
最近公司开了新项目,我负责的内容之一是系统的后端。具体项目内容我就不介绍了,但是用到的技术有些还是很有趣的,值得记录一下。今天介绍的就是其中一个:利用redis的pubsub订阅消息功能做消息队列。
对于这个功能本身,还是比较简单的。redis本身支持了publish/subscribe的功能,publish是广播消息,subscribe是订阅消息。服务端使用
publish [channel] [content]
发布了一条消息,如果客户端已经提前订阅了这个频道,这个时候就可以收到消息了。订阅的命令也很简单
subscribe [channel]
之后客户端就开始进入监听状态了。
这个功能用python实现起来也很简单,直接使用redis库就可以。至于基本的使用方法,我就不介绍了,这个随便百度一下就一大片。重点来说说redis里面的pubsub功能——其实也是百度翻到的,写一个辅助类:
classRedisSubscriber(object):"""Redis频道订阅辅助类"""
def __init__(self, channel):
self._sentinel= Sentinel(config.RedisConfig.HOST_PORT, password=config.RedisConfig.PASSWORD)
self.conn=self._sentinel.master_for(config.RedisConfig.MASTER)
self.channel= channel #定义频道名称
defpsubscribe(self):"""订阅方