PUBLISH 命令用于向给定的频道发送信息,发布订阅金沙js娱乐场官方网站:(pub/sub)是一种消息通信模式

订阅者可以订阅任意多个频道,发布者可以发消息到任意多个频道上,PUBLISH 命令用于向给定的频道发送信息,SUBSCRIBE 命令订阅给定的一个或多个频道,发布订阅(pub/sub)是一种消息通信模式,server订阅自己感兴趣的消息类型

金沙js娱乐场官方网站 1

简介

发布者和订阅者都是Redis客户端。发布者可以发消息到任意多个频道上,订阅者可以订阅任意多个频道。

金沙js娱乐场官方网站 1

 这几天做的工单,涉及到了关于 redis
的发布订阅功能,这里就跟大家分享一下。

订阅命令

subscribe channel [channel …]:返回的数字 1 , 2
表示订阅的第n个频道,频道返回的消息类型是message

127.0.0.1:6379> subscribe education healthReading messages... (press Ctrl-C to quit)1) "subscribe"2) "education"3) (integer) 11) "subscribe"2) "health"3) (integer) 2

psubscribe  channel [channel …]
:p—pattern,模式匹配,相当正则。假如有频道 news.it  、news.beauty
、newsPE , health
、那只有前两个符合正则news.*,那么前两个频道的消息,订阅者都能接受。频道返回的消息类型是pmessage

127.0.0.1:6379> subscribe news.*Reading messages... (press Ctrl-C to quit)1) "subscribe"2) "news.*"3) (integer) 1

unsubscribe [channel [channel …]] : 取消通过subscribe订阅的频道
,如果不加传入频道参数,客户端使用 SUBSCRIBE
命令订阅的所有频道都会被退订

punsubscribe [channel [channel …]] :取消通过psubscribe订阅的频道
,如果不加传入频道参数,客户端使用 PSUBSCRIBE
命令订阅的所有频道都会被退订

redis一旦接受了一条订阅命令之后,就不能再接受下一条命令,订阅命令就是阻塞式的。只有强行退出Ctrl+C,重启客户端,才能输入别的命令。

相关命令:

发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub
/sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。Redis作为一个pub/sub
server,在订阅者和发布者之间起到了消息路由的功能。

发布命令

publish channel message :返回的整数表示接收到该消息的客户端总数。

C:\Users\user>redis-cli127.0.0.1:6379> publish new.love "love forever"(integer) 0127.0.0.1:6379> publish new.* "hehe"(integer) 0127.0.0.1:6379> publish foo "food"(integer) 1127.0.0.1:6379> publish foo "food1"(integer) 3127.0.0.1:6379> publish foo "bibi"(integer) 3127.0.0.1:6379> publish foo "hiie"(integer) 2127.0.0.1:6379> publish foo "oooo"(integer) 1127.0.0.1:6379> publish aaaBB "shenjingbing"(integer) 1

 

PUBLISH 发布

SUBSCRIBE 订阅

PSUBSCRIBE 一种订阅符合给定模式的所有频道的方法

UNSUBSCRIBE 退订

PUNSUBSCRIBE 退订一个订阅的模式

订阅者可以通过subscribe和psubscribe命令向redis
server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel)。当发布者通过publish命令向redis
server发送特定类型的消息时。订阅该消息类型的全部client都会收到此消息。这里消息的传递是多对多的。一个client可以订阅多个channel,也可以向多个channel发送消息。

这些命令被广泛用于构建即时通信应用,比如网络聊天室和实时广播、实时提醒等。

网上有个测试:

Redis相关源码文件:pubsub.c

  1. 启动redis-cli:

PUBLISH 命令用于向给定的频道发送信息,返回值为接收到信息的订阅者数量

redis 127.0.0.1:6379> psubscribe news.*

redis> PUBLISH treehole “top secret here …”

0

redis> PUBLISH chatroom “hi?”

1

Reading messages… (press Ctrl-C to quit)

SUBSCRIBE 命令订阅给定的一个或多个频道:

1) “psubscribe”

redis> SUBSCRIBE chatroom

Reading messages… (press Ctrl-C to quit)

1) “subscribe” # 订阅反馈

2) “chatroom” # 订阅的频道

3) 1 # 目前客户端已订阅频道/模式的数量

1) “message” # 信息

2) “chatroom” # 发送信息的频道

3) “hi?” # 信息内容

2) “news.*”

SUBSCRIBE 的返回值当中, 1) “”subscribe””是订阅的反馈信息,1)”message
“的则是订阅的频道所发送的信息。

3) (integer) 1