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

使用StackExchange.Redis处理瞬时网络错误

党权
2023-03-14
问题内容

在使用StackExchange.Redis客户端时,寻求有关处理临时网络问题的指导。

为了澄清起见,我并不是要首先使用ConnectionMultiplexer.Connect()连接到Redis服务器。我指的是在操作中间如何处理由于任何原因而中断的连接。(我们可以假设该命令是幂等的,StringSet,StringGet)

我问是因为我们正在从ServiceStack迁移到StackExchange客户端。在我们要替换的使用ServiceStack的代码中,捕获了异常,在短暂的thread.sleep()之后将再次尝试该操作。这在我们的生产环境中经常发生,并且在大多数情况下重试是可行的。

通常是System.Net.SocketException,消息为“主机中的软件中止了已建立的连接”或“远程主机强行关闭了现有连接”

如果抛出System.Net.SocketException,StackExchange.Redis是否会自动重试直到syncTimeout时间过去?

如果SE.Redis没有自动重试,那么在我们的代码中,在初始操作失败和重试之间应该采取任何建议的步骤吗?如:

  • 等待一小段时间?
  • 重新创建多路复用器?(我猜不是)
  • 调用Close()和Configure()吗?

感谢您的指导。


问题答案:

它不会自动重试。如果发生错误,则需要捕获并重试。

就实际重试而言,只要某些多路复用器的连接仍然有效,您就可以退后再试。

如果连接失败,它将 尝试
恢复,但是存在一个长期存在的错误,在该错误中,它可能会间歇性地进入某些不可恢复的状态并保持断开连接。如果有IsConnected返回,我们将通过重新创建多路复用器来解决此问题false



 类似资料:
  • 错误: 我的前端vue应用程序正在和后端正在我正在请求axios从vue文件到后端的get请求。 这就是我的终点 这个错误的原因是什么?

  • 批处理脚本可以使用网络设置。 命令用于更新,修复或查看网络或网络设置。 本章介绍命令可用的不同选项。 编号 命令 描述 1 NET ACCOUNTS 查看计算机的当前密码和登录限制。 2 NET CONFIG 显示当前的服务器或工作组设置。 3 NET COMPUTER 添加或删除附加到Windows域控制器的计算机。 4 NET USER 该命令可以用于查看特定用户帐户的详细信息。 5 NET

  • 通过对错误类型实现 Display 和 From,我们能够利用上绝大部分标准库错误处理工具。然而,我们遗漏了一个功能:轻松 Box 我们错误类型的能力。 标准库会自动通过 Form 将任意实现了 Error trait 的类型转换成 trait 对象 Box<Error> 的类型(原文:The std library automatically converts any type that imp

  • 我们的Web应用一旦上线之后,那么各种错误出现的概率都有,Web应用日常运行中可能出现多种错误,具体如下所示: 数据库错误:指与访问数据库服务器或数据相关的错误。例如,以下可能出现的一些数据库错误。 连接错误:这一类错误可能是数据库服务器网络断开、用户名密码不正确、或者数据库不存在。 查询错误:使用的SQL非法导致错误,这样子SQL错误如果程序经过严格的测试应该可以避免。 数据错误:数据库中的约束

  • 我在react native中的这个简单api调用有问题,我不知道为什么。我在reactJs上做了完全相同的事情,它在浏览器上运行得非常好。 常量FlatListGames=({导航})= [未处理的promise拒绝:错误:网络错误] node\u modules/axios/lib/core/enhanceError。js:24:11错误。toJSON node_modules/axios/l

  • 我有一个快速服务器运行,以启用用户身份验证使用护照。我在运行快速URL时获取用户信息,但我无法使用axios从我的反应应用程序中获取用户对象。我的反应应用程序说网络错误。 我试着用 快速应用程序。js(以) 我的express应用程序在端口3000上运行,因此我可以在访问时看到用户对象http://localhost:3000/user 但是当我试图在我的反应应用程序中访问这个时,我收到了网络错误