本篇笔记简单介绍了Redis的Pub/Sub的概念和php使用rawCommand命令和php-redis扩展方法实现publish/subscribe发布/订阅
1.概念
名称含义
channel频道:生产者和消费者直接操作的对象
publish生产者:向channel发送消息
subscribe消费者:订阅一个或多个channel
psubscribe消费者:匹配订阅一个或多个channel
punsubscribe退订:匹配退订,无参数则退订全部channel
unsubscribe退订:退订指定的channel,无参数则退订全部channel
pubsub列出当前活动channel(至少有一个订阅)
2.注意事项
1.生产者publish消息时打开一个连接,publish后连接可以立即关闭
2.channel只接收publish发送的消息,自身不存储消息,如果channel没有被订阅,则消息丢弃
3.订阅的消费者需要一直在线,阻塞获取消息,连接断开表示立即退订
3.使用rawCommand命令实现发布订阅
rawCommand是php-redis扩展中提供的命令,可以向redis发送任何原生的命令
1.消费者订阅Subscribe.php
消费者需要创建redis长连接,并且设置set_time_limit和default_socket_timeout,以确保阻塞获取消息过程php不超时,socket连接不超时
2.生产者发送消息Publish.php
3.执行消费者订阅,开始阻塞获取消息php Subscribe.php
4.执行生产者,开始发送消息php Publish.php
查看消费者终端
消费者获取到了生产者发送的消息。
4.直接使用php-redis扩展提供的方法实现发布订阅
1.消费者订阅Subscribe.php
2.生产者发送消息Publish.php
3.执行消费者订阅,开始阻塞获取消息php Subscribe.php
4.执行生产者,开始发送消息php Publish.php
查看消费者终端
消费者同样获取到了生产者发送的消息。
退订和查看活动channel命令与生产者和消费者类似,只是参数不同而已。