Redis的发布订阅(Publish/Subscribe)是通过频道(channels)来完成的。
主要包括以下步骤:
- 订阅者订阅一个或者多个频道。
SUBSCRIBE channel1 channel2 # 订阅频道
- 生产者向某个频道发布消息。
PUBLISH channel1 "hello" # 发布消息
- 订阅这个频道的所有订阅者都会收到这个消息。
- 订阅者可以处理这个消息并发回确认信息。
*subscribe channel1 channel2 # 订阅频道列表
*1 # 来自订阅者的 ID
$4
hello
# 收到的消息
- 生产者可以不断向这个频道发布消息,所有订阅者都可以收到。
关键点是:
- 频道 act as a stream of messages
- 订阅者通过订阅特定频道来确定要接收哪个 stream。
- 生产者通过发布信息到指定频道来推送消息给订阅者。
- 一个 subscriber 可以订阅一个或多个频道。
使用场景包括:
- 实时消息推送
- 实时数据更新
- 通知系统
- 实时聊天
在 Java 中可以使用 redis.clients.jedis.PubSub 类实现 Redis 的订阅者功能。