redis如何发布工作?

时间:2015-12-29 12:21:40

标签: python redis

假设有一个redis-client订阅频道c1而另一个redis-client将“数据”发布到频道c1

此时,当订阅“c1”的客户端获取数据(通过调用pubsub.listen()pubsub.get_message())或直接转到数据库时,发布的数据是否在redis-server中待定客户通过redis-server订阅频道c1

换句话说,当redis-client调用pubsub.getMessage()pubsub.listen()时,redis-client是否向redis-server发送请求以获取数据或仅从本地套接字缓冲区获取数据?< / p>

当我阅读一些文档时,它说pubsub.get_message()在内部使用select模块作为套接字。

这似乎意味着订阅的数据已经在客户端本地缓冲区中,而不是服务器。

你可以给我任何建议吗?

2 个答案:

答案 0 :(得分:3)

当客户端执行PUBLISH时,此命令会立即将消息推送到对其感兴趣的所有套接字中。消息不存储在redis中。如果客户在发布时没有订阅,他将永远不会看到该消息。

我不熟悉redis的python驱动程序,但从名称判断,我猜listen发送SUBSCRIBE命令,get_message从本地发送消息缓冲液中。

答案 1 :(得分:0)

Redis pubsub 开火,忘了

换句话说,当发送publish命令时,在线订阅者收到该消息,并且在发送publish命令时谁没有订阅/收听消息,赢得&永远不会收到这些消息。