Redis的消息系统

消息系统

所谓消息系统就是消息在发布者(Publishers)和订阅者(Subscribers)之间的传递规则,发布者不关心消息到底需要被谁接收使用,订阅者也不需要关心消息来自哪个发布者。发布者和订阅者之间通过频道(channels)来进行消息传递,发布者可以发布消息到多个频道中,而订阅者只会订阅感兴趣的频道。这样的解耦可以使得我们的网络拓扑结构更具扩展性。

Redis中提供了以下的命令,可实现消息系统

举个例子:

连接A

1
2
3
4
127.0.0.1:6379> SUBSCRIBE speaker
1) "subscribe"
2) "speaker"
3) (integer) 1

订阅了一个speaker的channel,我们在另外一个端口中发布消息看看:

连接B

1
2
127.0.0.1:6379> PUBLISH speaker "hello world!"
(integer) 1

连接A立即收到消息

1
2
3
1) "message"
2) "speaker"
3) "hello world!"

推送消息的格式化

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。