文章目录加载中

Redis 中的订阅/发布模式

# 介绍

redis 支持订阅/发布模式,可以实现进程间异步的消息传递。

订阅者可以订阅一个或若干个频道(channel),而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都会收到此消息。

# 命令

1、订阅消息:SUBSCRIBE

可以同时订阅多个频道:SUBSCRIBE channel.1 channel.2 ...

执行 SUBSCRIBE 命令后客户端会进入订阅状态,处于此状态下客户端不能使用除 SUBSCRIBE、UNSUBSCRIBE、PSUBSCRIBE 和 PUNSUBSCRIBE 这 4 个属于“发布/订阅”模式的命令之外的命令

2、发布消息:PUBLISH

向 channel.1 发送 hi: PUBLISH channel.1 hi

3、取消订阅:UNSUBSCRIBE

使用 UNSUBSCRIBE 命令可以取消订阅指定的频道,用法为 UNSUBSCRIBE [channel [channel …]],如果不指定频道则会取消订阅所有频道

4、支持匹配特殊规则/重复订阅:PSUBSCRIBE

可以使用 PSUBSCRIBE 命令订阅指定的规则。规则支持 glob 风格通配符格式。

例如,订阅所以 channel.开头的频道:PSUBSCRIBE channel.*

除此之外,使用 PSUBSCRIBE 命令可以重复订阅一个频道,如某客户端执行了PSUBSCRIBE channel.? channel.?*,这时向 channel.2 发布消息后该客户端会收到两条消息,而同时 PUBLISH 命令返回的值也是 2 而不是 1。

5、PUNSUBSCRIBE

PUNSUBSCRIBE 命令可以退订指定的规则,用法是 PUNSUBSCRIBE [pattern [pattern …]],如果没有参数则会退订所有规则。

注意:使用 PUNSUBSCRIBE 命令只能退订通过 PSUBSCRIBE 命令订阅的规则,不会影响直接通过 SUBSCRIBE 命令订阅的频道;同样 ,UNSUBSCRIBE 命令也不会影响通过 PSUBSCRIBE 命令订阅的规则

本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog