2015-06-04 46 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服務器不提供忽略錯誤的方法。應用程序很容易接收和放棄來自服務器的響應。看到我更新的答案。 –