您的位置:首页 > 数据库 > Redis

学习redis的订阅/发布

2017-12-08 00:00 309 查看
摘要: Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。



练习:

1.首先订阅名为“redisChannel”的通道:

命令为: subscribe channel
publish channel message

➜  ~ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> subscribe redisChannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChannel"
3) (integer) 1
1) "message"
2) "redisChannel"
3) "Today is Friday"
1) "message"
2) "redisChannel"
3) "\xe5\x85\xb3\xe5\x85\xb3"
1) "message"
2) "redisChannel"
3) "gholly"

2.然后新建一个客户端,往redisChannel通道发消息

➜  ~ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> publish redisChannel "Today is Friday"
(integer) 1
127.0.0.1:6379> publish redisChannel "关关"
(integer) 1
127.0.0.1:6379> publish redisChannel "gholly"
(integer) 1
127.0.0.1:6379>

3.尝试同时订阅多个通道channel,

127.0.0.1:6379> subscribe channel3 hh guanguan     #表示订阅了guanguan hh channel3这3个通道
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel3"
3) (integer) 1
1) "subscribe"
2) "hh"
3) (integer) 2
1) "subscribe"
2) "guanguan"
3) (integer) 3
1) "message"
2) "channel3"
3) "I am channel3"
1) "message"
2) "hh"
3) "I am hh"
1) "message"
2) "guanguan"
3) "I am guanguan"

--------------------
127.0.0.1:6379> publish channel3 "I am channel3"         #分别向这个3个通道发消息
(integer) 1
127.0.0.1:6379> publish hh "I am hh"
(integer) 1
127.0.0.1:6379> publish guanguan "I am guanguan"
(integer) 1
127.0.0.1:6379> publish gholly "I am gholly"
(integer) 0
127.0.0.1:6379>

两者可通信,可利用redis的订阅发布功能进行消息的即时推送功能

4.pubsub 查看所有订阅情况

127.0.0.1:6379> pubsub channels
1) "guanguan"
2) "hh"
3) "channel3"

5.psubscribe --订阅给定模式的一个或多个channel

127.0.0.1:6379> psubscribe gg.*          --是指订阅以gg.开头的channel
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "gg.*"
3) (integer) 1
1) "pmessage"
2) "gg.*"
3) "gg."
4) "hhhhh"
1) "pmessage"
2) "gg.*"
3) "gg.hf"
4) "hhhhh"

---发布
127.0.0.1:6379> publish gg "hhhhh"
(integer) 0
127.0.0.1:6379> publish gg. "hhhhh"
(integer) 1
127.0.0.1:6379> publish gg.hf "hhhhh"
(integer) 1
127.0.0.1:6379>

6.unsubscribe 退订通道

127.0.0.1:6379> unsubscribe hh
1) "unsubscribe"
2) "hh"
3) (integer) 0

7.punsubscribe 退订指定模式的通道

127.0.0.1:6379> punsubscribe gg.*
1) "punsubscribe"
2) "gg.*"
3) (integer) 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis subscribe publish