当前位置: 首页 > 面试题库 >

Redis Pub子通道内存

欧阳楚
2023-03-14
问题内容

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


问题答案:

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

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

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

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

> publish foo test
(integer) 0

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



 类似资料:
  • 我开始开发一个spring cloud stream项目。我已通过@Streamlistener注释成功接收到来自Kafka的消息。在将消息发送到任何输出通道之前,我必须通过调用externalservice或DB调用来转换有效负载。我不想从同一个streamlistener方法调用外部服务或DB方法。我的问题是,我们能否在Spring云流中创建内部通道(如Spring集成DSL流)?

  • YouTube频道可以有几个“相关”频道的列表。例如,音乐频道有相关的流派频道:嘻哈、流行、摇滚、乡村等。 音乐频道:http://www.youtube.com/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ 音乐频道相关频道:http://www . YouTube . com/Channel/UC-9-kytw 8 zkzndhqj 6 fg pwq/Channels 我可

  • 在 Netty 4.1 中,是否可以创建子通道/管道或嵌套通道/管道? 例如,我有一个管道,其中安装了各种编解码器,用于协议/序列化。在管道结束时,我将一条消息传递给我的应用程序级逻辑。过度简化的示例: 然后,这个应用逻辑的句柄方法可以执行它想要的任何顺序逻辑。这清楚地分离了我的应用程序级别逻辑,但是,我想利用Netty的ChannelPipeline提供的“拦截过滤器模式的高级形式”。我想将管道

  • 我想知道,如果成功后bootstrap.connect()通道是一个活动通道。

  • 问题内容: 我正在尝试实现字数统计程序,但是第一步我遇到了一些问题。 这是我的代码: 这是我的输出: 谢谢 ! 问题答案: 当主goroutine退出时,程序终止,因此没有时间做任何事情。您需要封锁直到完成。通道可用于此目的:

  • 我有一个服务器,它在收到请求时需要使用goroutines从不同的流中读取消息,将它们发送到父goroutine,父goroutine将消息聚合并将它们发送到客户端。所以会是这样的: 我使用不同的通道在所有这些goroutine之间进行通信,工人可以写到聚合通道,处理程序(父goroutine)可以接收它并将其发送回客户机,所以一切都正常工作,几乎是:) 问题是我的工人没有收到由通道上的处理程序发