redis的发布与订阅

1.命令:

1.1发布消息

publish channel message

返回结果为订阅者个数,目前没有订阅者所以返回0

127.0.0.1:6379> publish channel:sports "hello world"

(integer) 0

1.2 订阅消息

subscribe channel [channel ...]

订阅者可以订阅多个频道,下面订阅者订阅 channel:sports

127.0.0.1:6379> subscribe channel:sports

Reading messages... (press Ctrl-C to quit)

1) "subscribe"

2) "channel:sports"

3) (integer) 1

当客户端发布一条消息:

 publish channel:sports "hello world"

当前订阅客户端会收到:

127.0.0.1:6379> subscribe channel:sports

Reading messages...(press Ctrl-C to quit)

1) "message"

2) "channel:sports"

3) "hello world"

如果有多个订阅者,则每个订阅者客户端都会收到相同消息

有关订阅命令有两点需要注意:

1.客户端在订阅之后进入订阅状态,只能接收subscribe、psubscribe、unsubscribe、punsubscribe

2.新开启的客户端无法接收该频道的历史消息,因为redis不会对消息进行持久化


与专业的消息系统(kafka、RocketMQ)相比,redis的发布订阅略显简陋粗糙,无法实现消息堆积与回溯。但简单


1.3 取消订阅

unsubscribe channel [channel...]

127.0.0.1:6379> unsubscribe channel:sport

1) "unsubscribe"

2) "channel:sport"

3) (integer) 0

1.4 按照模式订阅和取消订阅

psubscribe pattern [pattern...]

punsubscribe pattern [pattern...]

除了subscribe unsubscribe 命令,redis命令还支持glob风格的订阅命令,订阅psubscribe 取消订阅punsubscribe

127.0.0.1:6379> psubscribe channel*

Reading messages... (press Ctrl-C to quit)

1) "psubscribe"

2) "channel*"

3) (integer) 1

1.5 查询订阅

1)查看活跃的频道

pubsub channels [pattern]

活跃的频道指的是至少有一个订阅者,pattern是指可以指定具体的模式:

127.0.0.1:6379> pubsub channels

1) "channel:sports"

127.0.0.1:6379> pubsub channels channel:*

1) "channel:sports"

2)查询频道订阅数

pubsub numsub [channel]

127.0.0.1:6379> pubsub numsub channel:sports

1) "channel:sports"

2) (integer) 1

3) 查询模式订阅数

pubsub numpat

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容