redis:拨打 tcp [REDIS ADDRESS] connect:连接被拒绝

redis: dial tcp [REDIS ADDRESS] connect: connection refused

我在 docker 中使用 redigo。我有一个处理传入事件并使用 redis 进行速率限制的服务器。每 100k+ 个连接中就有一个出现以下错误:

redis: dial tcp IP ADDRESS: connect: connection refused

配置全部在 docker 中使用 docker-compose。我有哨兵向我发送这些错误,我想知道是否有任何 tweaks/settings 我可以对 remove/reduce 这个错误

我的 redigo 配置是

redis := &redis.Pool{
    MaxActive: idleConnections,
    MaxIdle:   idleConnections,
    Wait:      true,
    Dial: func() (redis.Conn, error) {
        return redis.Dial("tcp", address, options...)
    },
}

您可以使用某种指数退避重试拨号:

Dial: func() (redis.Conn, error) {
    c, err := redis.Dial("tcp", address, options...)
    for retries := 0; err != nil && retries < 5; retries++ {
        time.Sleep((50 << retries) * time.Millisecond)
        c, err = redis.Dial("tcp", address, options...)
    }
    return c, err
},