消息系统
所谓消息系统就是消息在发布者(Publishers)和订阅者(Subscribers)之间的传递规则,发布者不关心消息到底需要被谁接收使用,订阅者也不需要关心消息来自哪个发布者。发布者和订阅者之间通过频道(channels)来进行消息传递,发布者可以发布消息到多个频道中,而订阅者只会订阅感兴趣的频道。这样的解耦可以使得我们的网络拓扑结构更具扩展性。
Redis中提供了以下的命令,可实现消息系统
举个例子:
连接A
1 | 127.0.0.1:6379> SUBSCRIBE speaker |
订阅了一个speaker的channel,我们在另外一个端口中发布消息看看:
连接B
1 | 127.0.0.1:6379> PUBLISH speaker "hello world!" |
连接A立即收到消息
1 | 1) "message" |
推送消息的格式化
Redis中的一条消息是一个数组类型。
- 订阅时
1 | SUBSCRIBE speaker |
实际发送了指令
1 | *3\r\n$9\r\nsubscribe\r\n$7\r\nspeaker\r\n:1 |
*3
数组的长度为3,$9
,$7
表示接下来的数组元素的长度,:1
表示此次订阅了1个channel。