redis pub/sub 发布订阅

时间:2021-08-19 10:06:44

Redis的列表数据结构有blpopbrpop命令,能从列表里返回且删除第一个(或最后一个)元素,或者被堵塞,直到有一个元素可供操作。这可以用来实现一个简单的队列。(参考:http://www.cnblogs.com/youxin/p/4191547.html)

(译注:对于blpopbrpop命令,如果列表里没有关键字可供操作,连接将被堵塞,直到有另外的Redis客户端使用lpushrpush命令推入关键字为止。)

此外,Redis对于消息发布和频道订阅有着一流的支持。你可以打开第二个redis-cli窗口,去尝试一下这些功能。在第一个窗口里订阅一个频道(我们会称它为warnings):

subscribe warnings

其将会答复你订阅的信息。现在,在另一个窗口,发布一条消息到warnings频道:

publish warnings "it's over 9000!"

如果你回到第一个窗口,你应该已经接收到warnings频道发来的消息。

你可以订阅多个频道(subscribe channel1 channel2 ...),订阅一组基于模式的频道(psubscribe warnings:*),以及使用unsubscribepunsubscribe命令停止监听一个或多个频道,或一个频道模式。

最后,可以注意到publish命令的返回值是1,这指出了接收到消息的客户端数量。

这里的客户端与server端采用长连接建立推送机制,一个客户端发布消息,可以在多个客户端收到通知。

参考:

http://redis.io/topics/pubsub 中文译文:http://www.redis.cn/topics/pubsub.html

https://redis.readthedocs.org/en/latest/pub_sub/index.html