一尘不染

Redis Pub子通道内存

redis

在pub-
sub的情况下,Redis使用什么机制将消息保留在内存中?如果没有客户端订阅,消息将如何处理?Redis会缓冲它们吗?有没有一种配置最小值的方法。和最大
每个通道分配的内存?


阅读 268

收藏
2020-06-20

共1个答案

一尘不染

实现(x)中可以看到,Redis不会在Pub
/ Sub上下文中将消息保留在内存中:

  1. 邮件会发送给监听该频道的客户端(如果有),
  2. 该消息将发送给正在侦听匹配频道(如果有)的客户端。

然后,Redis简单地返回有多少客户已接收到该消息(请记住,一个客户可能多次接收到一条消息,例如,如果多个模式匹配)。

如果没有客户端订阅,Redis只会返回0,并且不会记录/缓冲消息:

> publish foo test
(integer) 0

(x)基本上,Redis在订阅的客户端列表上循环并发送带有消息的回复。

2020-06-20