在pub- sub的情况下,Redis使用什么机制将消息保留在内存中?如果没有客户端订阅,消息将如何处理?Redis会缓冲它们吗?有没有一种配置最小值的方法。和最大 每个通道分配的内存?
在实现(x)中可以看到,Redis不会在Pub / Sub上下文中将消息保留在内存中:
然后,Redis简单地返回有多少客户已接收到该消息(请记住,一个客户可能多次接收到一条消息,例如,如果多个模式匹配)。
如果没有客户端订阅,Redis只会返回0,并且不会记录/缓冲消息:
> publish foo test (integer) 0
(x)基本上,Redis在订阅的客户端列表上循环并发送带有消息的回复。