Python-redis生产者消费者模式和发布者订阅者模式
生产者消费者模式
生产者消费者模式是一个或多个消费者监听redis消息队列,一旦生产者有消息发出,那么消费者谁抢到算谁的,消息队列没有消息后,则继续监听等待。
示例代码:
关键方法:blpop
import redis
# 生产者消费者模式
class RedisTask(object):
def __init__(self,info):
self.rcon = redis.StrictRedis(host='localhost', db=1)
self.queue = info
def listen_task(self):
while True:
task = self.rcon.blpop(self.queue, 0) # 填0为阻塞等待,填大于0的数字为超时等待,超过时间没有消息接收到,则task为None
print(task)
if __name__ == '__main__':
info = 'abc'
redis_task = RedisTask(info)
redis_task .listen_task()
发布者订阅者模式
发布者订阅者模式是一个或多个客户端订阅消息频道,只要发布者发布这个频道的消息,则所有订阅者都可以接收到此频道的消息,等待模式为阻塞等待。
示例代码:
关键方法:pubsub,publish,subscribe,psubscribe
发布者
import redis
# 发布者
redis_conn = redis.StrictRedis(host='localhost', db=5)
redis_conn.publish('test1', 'abcdef')
订阅者
#订阅者
redis_conn = redis.StrictRedis(host='localhost', db=5)
rc_sub = redis_conn.pubsub()
rc_sub.subscribe('test1')
# 订阅多个频道使用psubscribe方法,参数为列表
# rc_sub.psubscribe(['test1','test2','test3'])
for item in rc_sub.listen():
if item['type'] == 'message':
print(item['channel'])
print(item['data'])