c语言精品网站开发的教学,学电脑在哪里报名,佛山网站建设改版,wordpress logyPub/Sub (发布订阅)
Redis的发布订阅#xff08;Pub/Sub#xff09;是一种消息传递模式#xff0c;它允许消息的发送者#xff08;发布者#xff09;将消息发送到通道#xff0c;而订阅者则可以订阅一个或多个通道#xff0c;并接收发布者发送到这些通道的消息。发布订…Pub/Sub (发布订阅)
Redis的发布订阅Pub/Sub是一种消息传递模式它允许消息的发送者发布者将消息发送到通道而订阅者则可以订阅一个或多个通道并接收发布者发送到这些通道的消息。发布订阅模式在实时通信和消息传递系统中非常有用它可以用于构建聊天应用、实时数据更新、事件通知等场景。
以下是Redis发布订阅功能的主要特点和用法 通道Channel发布订阅模式通过通道进行消息传递。发布者发布消息到一个或多个通道而订阅者则可以订阅一个或多个通道以接收相关消息。 发布Publish发布者向指定通道发送消息。一旦发布者发布了一条消息所有订阅了该通道的订阅者都会接收到这条消息。 订阅Subscribe订阅者可以选择订阅一个或多个通道以接收发布者发送到这些通道的消息。一旦订阅了某个通道订阅者将持续接收该通道上的消息。 模式订阅Pattern Subscribe除了普通的通道订阅外Redis还支持模式订阅即可以通过订阅模式来匹配多个通道。例如订阅模式为 chat:* 的订阅者将接收到所有以 chat: 开头的通道上的消息。 取消订阅Unsubscribe订阅者可以取消订阅一个或多个通道以停止接收相关通道上的消息。 消息传递消息是异步传递的发布者发布消息后订阅者可以在稍后的时间接收到该消息。这种方式使得发布者和订阅者之间解耦从而提高系统的可扩展性和灵活性。
命令
发布消息
publish channel message
订阅消息
subscribe channel [channel ...]
取消订阅
unsubscribe [channel [channel ...]] example
127.0.0.1:6379 publish sports test
(integer) 0
127.0.0.1:6379 publish sports test2
(integer) 1
127.0.0.1:6379 publish sports test3
(integer) 1
127.0.0.1:6379
127.0.0.1:6379 subscribe sports
1) subscribe
2) sports
3) (integer) 1
1) message
2) sports
3) test2
1) message
2) sports
3) test3
Reading messages... (press Ctrl-C to quit or any key to type command)
127.0.0.1:6379 unsubscribe sports
1) unsubscribe
2) sports
3) (integer) 0
按照模式订阅和取消订阅
除了subcribe和unsubscribe命令 Redis 命令还支持glob风格的订阅命令 psubscribe 和取消订阅命令 punsubscribe
psubscribe pattern [pattern...]
punsubscribe [pattern [pattern ...]]
example
psubscribe it*
查询订阅
查看活跃的频道
pubsub channels [pattern]
所谓活跃的频道是指当前频道至少有一个订阅者 其中[pattern]是可以指定具体的模式
查看频道订阅数
pubsub numsub [channel ...]
查看模式订阅数
pubsub numpat Tips 客户端在执行订阅命令之后进入了订阅状态 只能接收subscribe、psubscribe、 unsubscribe、 punsubscribe的四个命令。 发布者和订阅者之间是完全解耦的它们之间不直接通信而是通过Redis服务器来中转消息。 新开启的订阅客户端 无法收到该频道之前的消息 因为Redis不会对发布的消息进行持久化。 订阅者在断开连接后会自动取消订阅而重新连接后需要重新订阅才能接收到消息。 Redis发布订阅模式并不适合大规模的消息传递因为Redis是单线程的如果有大量的订阅者连接到同一个Redis实例可能会影响到Redis服务器的性能。 发布订阅模式并不保证消息的可靠性传递即使发布者发布了消息但订阅者可能会由于网络问题或其他原因而无法接收到该消息。
参考资料《Redis 开发与运维》