消息模式介绍
消息模式是为了帮助解决在业务中,进行资源有效利用方面的协调
Redis 的消息模式类型:发布订阅,消息队列
Redis 发布订阅
- 发布者(pulisher)
- 频道(channel)
- 订阅者(subscriber)
创建一个频道
127.0.0.1:6379> SUBSCRIBE test
1) "subscribe"
2) "test"
3) (integer) 1
发布者发送消息
127.0.0.1:6379> PUBLISH test "hhhhh"
(integer) 1
127.0.0.1:6379> PUBLISH test 'hi'
(integer) 2
订阅者接受消息
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test"
3) (integer) 1
1) "message"
2) "test"
3) "hhhhh"
1) "message"
2) "test"
3) "hi"
实现类似QQ聊天功能
Redis 消息队列
在Redis中列表类型天生就是一个消息队列。
使用 Python + Redis 实现生产者消费者模型
生产者
import redis
import time
r = redis.Redis(host='192.168.100.10', password='000000')
for i in range(100):
r.lpush('P_C', f'{i + 1:0>3}')
time.sleep(4)
消费者
import redis
import time
r = redis.Redis(host='192.168.100.10', password='000000')
for i in range(100):
rest = r.brpop('P_C')
print(f'吃了第{rest[1].decode("utf-8")}个包子')
time.sleep(3)