Redis的列表数据结构有blpop
和brpop
命令,能从列表里返回且删除第一个(或最后一个)元素,或者被堵塞,直到有一个元素可供操作。这可以用来实现一个简单的队列。
(译注:对于blpop
和brpop
命令,如果列表里没有关键字可供操作,连接将被堵塞,直到有另外的Redis客户端使用lpush
或rpush
命令推入关键字为止。)
此外,Redis对于消息发布和频道订阅有着一流的支持。你可以打开第二个redis-cli
窗口,去尝试一下这些功能。在第一个窗口里订阅一个频道(我们会称它为warnings
):
subscribe warnings
其将会答复你订阅的信息。现在,在另一个窗口,发布一条消息到warnings
频道:
publish warnings "it‘s over 9000!"
如果你回到第一个窗口,你应该已经接收到warnings
频道发来的消息。
你可以订阅多个频道(subscribe channel1 channel2 ...
),订阅一组基于模式的频道(psubscribe warnings:*
),以及使用unsubscribe
和punsubscribe
命令停止监听一个或多个频道,或一个频道模式。
最后,可以注意到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