问题
在某个服务中使用 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/