在重新初始化连接失败时重试

想知道为什么 redigo 决定不导出 errorConn 类型,这将允许应用程序对连接失败进行特定的错误处理。实现后,应用程序必须将这些错误作为一般错误进行处理。

例如,我们的应用程序通常不关心单个 PUT 是否失败,但如果问题是 Redis 连接失败或 redis 池耗尽,则继续执行下一个 PUT(特别是如果它需要打开新连接)是一个坏主意。我们应该停止并重试(使用指数退退),直到连接恢复。

代码示例,其中 redigo 在连接池耗尽时返回一般错误


叮当猫咪
浏览 132回答 1
1回答

哔哔one

链接中的代码行返回两个相应类型的值:。(Conn, error)if !p.Wait && p.MaxActive > 0 && p.active >= p.MaxActive {    p.mu.Unlock()    return errorConn{ErrPoolExhausted}, ErrPoolExhausted}类型是带有方法的接口。ConnErr// Err returns a non-nil value when the connection is not usable.Err() error因此,要获取基础错误,您可以:在第一个返回值上调用该方法;或Err检查第二个返回值。error作为旁注,比较错误的推荐方法是使用和/或来自标准库错误包。errors.Iserrors.As
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go