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

Stackexchange.Redis的开火和遗忘保证交货吗?

常源
2023-03-14
问题内容

我了解这CommandFlags.FireAndForget是针对您不关心响应的情况。

即使响应对于正在运行的应用程序并不重要,它也可以保证交付吗?


问题答案:

实际上,Redis协议并不真正支持“即发即弃”操作。除了发布/订阅流量外,所有Redis命令都与答复匹配,并且无法告诉Redis服务器忽略答复。

现在,某些客户端(例如StackExchange.Redis)通过协议的异步实现来模拟“解雇”模式。实际上,StackExchange.Redis中的“即发即弃”模式与“异步”模式非常相似,不同之处在于,在收到答复后,它们只会被丢弃。

它可靠吗?好吧,只要TCP / IP保证交付,它就保证交付。网络将尽力传输数据包(如果其中某些数据包丢失,最终将再次传输数据包),但这全部由TCP处理。

现在,如果服务器关闭或决定关闭连接,则客户端仅在尝试从套接字读取时才知道。StackExchange.Redis可能会愉快地继续在无效连接上发送命令一段时间。如果您有中间层(例如Twemproxy),情况可能会更糟。

换句话说,“即发即弃”流量通常会发送到服务器,并且网络上不会丢失任何消息,但是如果您遇到服务器或连接问题,则在客户端有机会注意到之前可能会丢失一些流量。它。我将此称为尽力而为行为。



 类似资料:
  • 我正在探索Spring Cloud网关过滤器工厂,它可以接受请求并将SUCCESS超文本传输协议状态返回给调用者。之后,根据过滤器出厂配置将其转发到目的地。 我在Spring doc中没有找到任何解决方案。有没有现有的过滤器工厂来实现这种模式?如果没有,那么有什么建议如何解决这个问题? 注意:我们想要中断Spring Cloud Gateway通信的原因是目标服务器响应时间非常高,呼叫者不能等待那

  • 首先,我想让用户重置他们的密码。已经有一个用户正在使用的应用程序,所以最好在那里集成它。我在其中创建了一个小的环形模块,并尝试通过与Keycloak password Embright表单提供的机制相同的机制来触发密码遗忘邮件。但我想不通他们是如何创建这个动作链接的: https://example.com/keycloak/auth/realms/my-realm/login-actions/r

  • 在reset可以遗弃不再使用的提交。执行遗弃时,需要根据影响的范围而指定不同的模式,可以指定是否复原索引或工作树的内容。 除了默认的mixed模式,还有soft和hard模式。欲了解受各模式影响的部分,请参照下面的表格。 模式名称 HEAD的位置 索引 工作树 soft 修改 不修改 不修改 mixed 修改 修改 不修改 hard 修改 修改 修改 主要使用的场合: 复原修改过的索引的状态(mi

  • 本文向大家介绍你有没有遗忘mysql的历史记录,包括了你有没有遗忘mysql的历史记录的使用技巧和注意事项,需要的朋友参考一下       查看mysql的语句,比较常用的大概是show processlist 命令了,但是这个对于查询时间比较长的语句比较有意义,对于一下子就能执行的语句真心拼不过手速啊.      于是就只能从mysql的历史记录里面着手了.为了实现这个目的,我们需要修改/etc

  • 我正在搜索动觉数据流的文档,但我找不到像 动情保证至少一次交付 从生产者方面,我预计发送的消息会传播到多个节点(类似于Kafka的ack=all)从消费者方面,我预计在消费者成功处理时会有相当于Kafka提交偏移量的东西,或者类似于Google Cloud的Pub/Sub消息确认。 是否有动觉提交信息保证?是否有动觉处理保证(如果已处理并确认已处理,则将消息标记为只读)

  • 根据最近的一篇文章,Kafka可以在复制配置下删除已确认的消息: https://aphyr.com/posts/293-call-me-maybe-kafka 如果必须绝对确定消息已发送给消费者,此解决方案是否在所有情况下都有效: 建立两个主题,一个用于发送,一个用于接收 即使在丢弃消息的情况下也能工作吗?这个图案有名字吗?