我正在使用GO redis客户端redigo将图像写入~20台redis服务器
速度是这里的一个重要因素,我只是将设置命令发送到redis,所以我使用Send和Flush而不调用Receive。
几个小时后,我在客户端上“通过同行重置连接”
我想知道,这与我不打电话给接收这个事实有关吗?
也许我的RX队列只是达到了它的最大容量,因为我没有用接收器清空它?
谢谢。
答案 0 :(得分:2)
应用程序必须调用Receive以清除服务器的响应并检查错误。如果应用程序不是流水线命令,那么最好调用Do.结合发送,刷新和接收。
如果您不关心错误,请启动goroutine阅读回复:
go func(c redis.Conn) {
for c.Err() == nil {
c.Receive()
}
}()