为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
叮当猫咪 2022-09-26 15:33:57
想知道为什么 redigo 决定不导出 errorConn 类型,这将允许应用程序对连接失败进行特定的错误处理。实现后,应用程序必须将这些错误作为一般错误进行处理。例如,我们的应用程序通常不关心单个 PUT 是否失败,但如果问题是 Redis 连接失败或 redis 池耗尽,则继续执行下一个 PUT(特别是如果它需要打开新连接)是一个坏主意。我们应该停止并重试(使用指数退退),直到连接恢复。代码示例,其中 redigo 在连接池耗尽时返回一般错误
查看完整描述

1 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

链接中的代码行返回两个相应类型的值:。(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


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号