尋找使用StackExchange.Redis客戶端時處理臨時網絡問題的指導。使用StackExchange處理瞬時網絡錯誤.Redis
爲了說明起見,我並不是說最初使用ConnectionMultiplexer.Connect()連接到Redis服務器。我指的是如何處理在操作中出於任何原因而中斷的連接。 (我們可以假設命令是冪等的,StringSet,StringGet)
我問,因爲我們正在從ServiceStack遷移到StackExchange客戶端。在我們正在替換的代碼中,它使用ServiceStack,捕獲異常並在短的thread.sleep()之後再次嘗試操作。這種情況在我們的生產環境中相當頻繁地發生,並且在大多數情況下重試都可以工作。
通常它與「一個已建立的連接是通過軟件在主機中止」的消息一System.Net.SocketException或
如果一個系統「的現有連接被強行關閉遠程主機」。 Net.SocketException被拋出,StackExchange.Redis會自動重試,直到syncTimeout時間已過?
如果SE.Redis不會自動重試,那麼在初始操作失敗和我們的代碼中重試之間是否存在應該發生的建議步驟?如:
- 等待一小段時間?
- 重新創建多路複用器? (我猜不是)
- 調用Close()和Configure()?
感謝您的任何指導。
謝謝你的建議。你是否意識到有一個線索提供了關於你提到的長期錯誤的更多信息? – eoldre
在github上打開了大約一打的副本 https://github.com/StackExchange/StackExchange.Redis/issues/269 –