2015-06-04 50 views
0

我正在使用GO redis客户端redigo将映像写入~20个redis服务器。
速度是一个重要的因素,我只是发送设置命令到redis,所以我使用发送和刷新而不调用接收。
几个小时后,我在客户端上获得“通过对等方重置连接”。
我想知道,这是否与我不打电话接收的事实有关?
也许我的RX队列刚刚达到其最大容量,因为我没有用接收清空它?使用Go Redis客户端(Redigo)

谢谢。

+0

发布您的代码与你的连接池/设置详细。 – elithrar

+0

@elithrar我有一个连接每个redis服务器没有池。我只想知道是否可以在不调用receive的情况下将命令刷新到redis。 – eladm26

回答

2

应用程序必须调用Receive来清除服务器的响应并检查错误。如果应用程序不是流水线命令,那么最好调用Do.结合发送,刷新和接收。

如果你不关心错误,然后启动一个够程读取响应:

go func(c redis.Conn) { 
    for c.Err() == nil { 
     c.Receive() 
    } 
}() 
+0

谢谢你的男人。还有一件事,我有兴趣忽略来自redis服务器的响应,以加快速度,同时我也不关心一些由于某些错误而丢失的图像。你知道关于禁用Redis服务器回复每个命令的方法吗? – eladm26

+0

@ eladm26 Redis服务器不提供忽略错误的方法。应用程序很容易接收和放弃来自服务器的响应。看到我更新的答案。 –