发布订阅
2025年01月10日
前言
一、pubsub
1.1 认识
pubsub
是 Redis
提供的命令,用于管理和查询发布/订阅(Pub/Sub
)系统的状态。它允许您查询有关频道的信息、订阅的数量等。
1.2 语法
pubsub(subcommand: "CHANNELS", callback?: Callback<unknown[]>): Promise<unknown[]>
pubsub(subcommand: "CHANNELS", pattern: string, callback?: Callback<unknown[]>): Promise<unknown[]>
pubsub(subcommand: "HELP", callback?: Callback<unknown[]>): Promise<unknown[]>
pubsub(subcommand: "NUMPAT", callback?: Callback<unknown[]>): Promise<unknown[]>
pubsub(subcommand: "NUMSUB", callback?: Callback<unknown[]>): Promise<unknown[]>
pubsub(...args: [subcommand: "NUMSUB", ...channels: (string | Buffer)[], callback: Callback<unknown[]>]): Promise<unknown[]>
pubsub(...args: [subcommand: "NUMSUB", ...channels: (string | Buffer)[]]): Promise<unknown[]>
pubsub(subcommand: "SHARDCHANNELS", callback?: Callback<unknown[]>): Promise<unknown[]>
pubsub(subcommand: "SHARDCHANNELS", pattern: string, callback?: Callback<unknown[]>): Promise<unknown[]>
pubsub(subcommand: "SHARDNUMSUB", callback?: Callback<unknown[]>): Promise<unknown[]>
pubsub(...args: [subcommand: "SHARDNUMSUB", ...shardchannels: (string | Buffer)[], callback: Callback<unknown[]>]): Promise<unknown[]>
pubsub(...args: [subcommand: "SHARDNUMSUB", ...shardchannels: (string | Buffer)[]]): Promise<unknown[]>
-
HELP
: 返回有关pubsub
命令的帮助信息。pubsub("HELP", callback?: Callback<unknown[]>)
- 返回值: 帮助信息
-
NUMPAT
: 返回当前有多少个模式(patterns
)被订阅。pubsub("NUMPAT", callback?: Callback<unknown[]>)
- 返回值: 模式数量。
-
NUMSUB
: 返回某些频道的订阅者数量。可以提供一个或多个频道名称。pubsub("NUMSUB", callback?: Callback<unknown[]>)
pubsub("NUMSUB", ...channels: (string | Buffer)[], callback?: Callback<unknown[]>)- 返回值: 每个频道的订阅者数量。
-
CHANNELS
: 用于列出当前所有已订阅的频道。可以通过提供一个模式(pattern
)来过滤频道名。pubsub("CHANNELS", callback?: Callback<unknown[]>)
pubsub("CHANNELS", pattern: string, callback?: Callback<unknown[]>)- 返回值: 所有订阅的频道,或者按模式匹配的频道。
-
SHARDNUMSUB
: 返回某些分片频道的订阅者数量。可以提供一个或多个分片频道名称。pubsub("SHARDNUMSUB", callback?: Callback<unknown[]>)
pubsub("SHARDNUMSUB", ...shardchannels: (string | Buffer)[], callback?: Callback<unknown[]>)- 返回值: 每个分片频道的订阅者数量。
-
SHARDCHANNELS
: 返回当前所有分片的频道。可以通过提供一个模式来过滤分片频道。pubsub("SHARDCHANNELS", callback?: Callback<unknown[]>)
pubsub("SHARDCHANNELS", pattern: string, callback?: Callback<unknown[]>)- 返回值: 所有分片的频道或匹配模式的分片频道。
二、publish
2.1 认识
publish
是 Redis
提供的一个发布消息的命令,它属于发布/订阅 (Pub/Sub
) 系统的一部分。通过 publish
命令,您可以将消息发布到指定的频道中,任何订阅该频道的客户端都会收到消息。
2.2 语法
publish(channel: string | Buffer, message: string | Buffer, callback?: Callback<number>): Promise<number>
-
channel (string | Buffer)
: 频道的名称,可以是字符串或Buffer
类型。频道是用于消息传递的主题,订阅者将基于这个频道来接收消息。 -
message (string | Buffer)
: 要发布的消息内容,可以是字符串或Buffer
类型。 -
callback (Callback<number>, 可选)
: 可选的回调函数,用于返回操作结果。
三、subscribe
3.1 认识
Redis
的订阅命令,用于订阅一个或多个频道。
3.2 语法
subscribe(...args: [...channels: (string | Buffer)[], callback: Callback<unknown>]): Promise<unknown>
-
channels
: 一个或多个频道名称,可以是字符串或Buffer
类型。你可以通过传入多个频道名称来订阅多个频道。 -
callback
: 可选的回调函数,它在接收到消息时被触发。通常,回调中会收到发布的消息内容。