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