Redis之发布订阅

一、Redis的发布订阅

Redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE等命令组成。通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscriber):每当有其他客户端向被订阅的频道发送消息(message)时,频道的所有订阅者都会收到这条消息。
消息订阅有两种模式,一种是频道订阅,另一种是模式订阅。
频道订阅:

SUBSCRIBE "news.it"

模式订阅:

PSUBSCRIBE "news.*"

二、发布订阅实现原理

RedisServer结构体里有一个为pubsub_channels字典,另一个为pubsub_patterns链表。第一个字典key保存着频道,value是一个链表,保存订阅该频道的客户端信息;链表则保存着订阅频道模式的客户端信息

struct redisServer {
    // ...
    //保存所有频道的订阅关系
    dict *pubsub_channels;
    list *pubsub_patterns;
    // ...
};

消息发送时,只需要遍历字典和链表,将消息发送给订阅相关频道的客户端即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis发布订阅(Pub/Sub)功能是一种消息传递模式,允许多个客户端订阅频道以接收消息,并且可以将消息发布到指定的频道中。 下面是使用Redis发布订阅功能的基本步骤: 1. 订阅频道:使用SUBSCRIBE命令可以订阅一个或多个频道。例如,要订阅名为"channel1"和"channel2"的频道,可以执行以下命令: ``` SUBSCRIBE channel1 channel2 ``` 2. 发布消息:使用PUBLISH命令可以将消息发布到指定的频道。例如,要将消息"Hello, Redis Pub/Sub!"发布到名为"channel1"的频道中,可以执行以下命令: ``` PUBLISH channel1 "Hello, Redis Pub/Sub!" ``` 3. 接收消息:订阅频道后,Redis将会推送所有发布到该频道的消息。你可以通过订阅命令的响应来接收消息。例如,如果有消息发布到了"channel1"频道,你将收到以下响应: ``` message channel1 "Hello, Redis Pub/Sub!" ``` 4. 取消订阅:当你不再需要接收某个频道的消息时,可以使用UNSUBSCRIBE命令取消对该频道的订阅。例如,要取消对"channel1"频道的订阅,可以执行以下命令: ``` UNSUBSCRIBE channel1 ``` 使用Redis发布订阅功能,可以实现解耦和异步通信,适用于实时消息推送、事件驱动的架构等场景。请注意,Redis发布订阅功能是单向的,无法保证消息的可靠性传递。如果需要更高级别的消息队列功能,可以考虑使用Redis Streams或其他消息队列系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值