我明白,火災和遺忘適用於你不關心響應的情況。即使響應對正在運行的應用程序不重要,它是否也能保證交付?Stackexchange.redis是否會啓動並忘記保證傳送?
5
A
回答
4
實際上,Redis協議並不真正支持「火災和遺忘」操作。除pub/sub流量之外,所有Redis命令都與回覆相匹配,並且無法告訴Redis服務器忽略回覆。
現在一些客戶端(如StackExchange.Redis)通過協議的異步實現來模擬「火災和遺忘」模式。實際上,StackExchange.Redis中的「fire and forget」模式與「異步」模式非常相似,除了回覆在收到時簡單地被丟棄。
可靠嗎?那麼,它確保交付就TCP/IP保證交付。網絡將盡力傳輸數據包(最終數據包將在其中一些丟失時再次傳輸),但這全部由TCP處理。
現在,如果服務器關閉,或者決定關閉連接,則客戶端只有在嘗試從套接字讀取時纔會知道。 StackExchange.Redis可能會愉快地繼續發送一個死連接命令一段時間。如果你有一個middletier(比如Twemproxy),情況會更糟。換句話說,「火災和遺忘」的流量通常會被髮送到服務器,並且網絡上不會有任何消息丟失,但是如果您有服務器或連接問題,在客戶端之前可能會丟失一些流量有機會注意到它。我會稱之爲盡力而爲的行爲。
相關問題
- 1. Java - 如何啓動和忘記進程
- 2. StackExchange.Redis是否支持ZPOP?
- 3. StackExchange.Redis是否支持TransactionScope?
- 4. StackExchange.Redis是否支持MONITOR?
- 5. Boost:啓動並忘記異步函數調用?
- 6. 如何用Perl啓動多個fire並忘記PHP腳本?
- 7. 我該如何在Perl中啓動並忘記進程?
- 8. 驗證用戶名,忘記了問題,在ASP.net忘記回答會員
- 9. 是否有可能用pymongo「發射並忘記」請求
- 10. 是否會自動啓動緩存rdds?
- 11. SignalR中的保證傳送
- 12. QueryPerformanceCounter是否保證自啓動以來給你時間?
- 13. sfDoctrineGuardPlugin驗證後忘記憑證
- 14. Apple不保證傳送推送?
- 15. Laravel永遠不會忘記從會議
- 16. Eclipse RAP - Firefox不會忘記會話
- 17. 做USB控制傳輸保證傳送?
- 18. 忘記密碼並記住我?
- 19. 是否有任何StackExchange.Redis示例項目
- 20. Bootstrap傳送帶不啓動
- 21. Git:如果我在推送前忘記更新會怎麼樣
- 22. Safari會話總是忘記asp.net中的會話變量mvc 3
- 23. 無法找到包裝器「https」 - 您配置PHP時是否忘記啓用它?
- 24. 春天非阻塞休息「發送並忘記」
- 25. Twitter引導程序傳送帶不會自動啓動
- 26. 發送密碼,如果用戶忘記
- 27. devise忘記密碼郵件不發送
- 28. 忘記密碼發送在android系統
- 29. 發送忘記密碼電子郵件
- 30. 忘記推送和丟失更改
謝謝。我的問題主要是它是否通過庫或底層TCP提供重試,並基於你的答案似乎是的。 – DTown 2014-09-08 14:17:24