MENU

go-redis超时重连

April 21, 2023 • linux相关

问题

在某个服务中使用 redis 来管理在线 client,发现服务启动过几分钟后在 setHash 时失败,netstat -an|grep 6379 发现链接已经关闭了,idletime 大于 timeout,则会自动关闭长链接。

解决

在使用 Go-redis 连接 Redis 时,如果出现连接异常,可以使用「重连」的机制来处理。
可以使用 go-redis 库中的「Options」类型的「MaxRetry」字段来设置重连的次数。例如:

opts := redis.Options{
    Addr:         addr,            //redis 地址
    Password:     psw,             //密码
    DialTimeout:  time.Second * 5, //超时时间
    DB:           0,
    MaxRetries:   5, //最大重试次数,默认为 3 次
    MinIdleConns: 1, //最小空闲连接数
}

这样,当 Go-redis 连接 Redis 时出现异常,它会自动重试连接三次,如果还是不能连接上 Redis,就会报错。

资料

https://tech.qimao.com/yi-xing-bao-cuo-rang-wo-tan-jiu-qi-liao-go-redislian-jie-chi/