Rozumiem, że ogień i zapomnienie są przeznaczone do sytuacji, w których nie interesuje cię odpowiedź. Czy gwarantuje również dostawę, nawet jeśli odpowiedź nie jest ważna dla uruchomionej aplikacji?Stackexchange.redis robi ogień i zapomina o dostarczeniu gwarancji?
Odpowiedz
W rzeczywistości protokół Redis nie obsługuje operacji "pożar i zapomnij". Z wyjątkiem ruchu pub/sub, wszystkie polecenia Redis są dopasowane do odpowiedzi i nie ma sposobu, aby powiedzieć serwerowi Redis, aby pominąć odpowiedź.
Teraz niektórzy klienci (np. StackExchange.Redis) symulują tryb "ogień i zapomnij" poprzez asynchroniczną implementację protokołu. W rzeczywistości tryb "ogień i zapomnij" w StackExchange.Redis jest bardzo podobny do trybu "asynchronicznego", z tym wyjątkiem, że odpowiedzi są po prostu odrzucane, gdy są odbierane.
Czy to jest niezawodne? Cóż, gwarantuje dostawę, o ile TCP/IP gwarantuje dostawę. Sieć będzie się starała przesłać pakiety (ostatecznie pakiety zostaną przesłane ponownie, jeśli niektóre z nich zostaną utracone), ale wszystko to jest obsługiwane przez TCP.
Teraz, jeśli serwer jest wyłączony lub zdecydować o zamknięciu połączenia, klient będzie wiedział tylko, kiedy próbuje odczytać z gniazda. StackExchange.Redis może z przyjemnością kontynuować wysyłanie komend przez niedziałające połączenie przez pewien czas. Jeśli posiadasz middletier (taki jak Twemproxy), sytuacja może być jeszcze gorsza.
Innymi słowy, ruch "strzelaj i zapomnij" będzie generalnie wysyłany na serwer, a żadna wiadomość nie zostanie utracona w sieci, ale jeśli masz problemy z serwerem lub połączeniem, część ruchu może zostać utracona, zanim klient szansę na zauważenie tego. Nazwałbym to zachowaniem typu "best effort".
- 1. XCode zapomina o zaimportowanych frameworkach
- 2. kątowe scrollstart i scrollstop nie ogień w dyrektywie, przewijać robi
- 3. Raport o dostarczeniu wiadomości SMS w Androidzie
- 4. Ehcache ustawiony na wieczny, ale zapomina o elementach?
- 5. Ogień i zapomnij (Asynch) Wywołanie metody ASP.NET
- 6. Klasa "Ogień i zapomnij" w ARC
- 7. StackExchange.Redis proste C# Przykład
- 8. Ruby Timeout :: Timeout nie robi wyjątków ogień i nie wrócić, co udokumentowane
- 9. Zwiększ: Ogień i zapomnij asynchroniczne wywołanie funkcji?
- 10. Przetwarzaj pliki jednocześnie po ich dostarczeniu C#
- 11. Flush/Empty db w StackExchange.Redis
- 12. jquery waypointy ogień raz
- 13. Metody transakcji StackExchange.Redis zawieszają się
- 14. Połączenie asynchroniczne StackExchange.Redis zawiesza się
- 15. Algorytm 2D/dym/ogień/mgła
- 16. Jak flushdb za pomocą StackExchange.Redis?
- 17. Sesja kolby zapomina wpisu między żądaniami
- 18. boot2docker vm zapomina zmian po ponownym uruchomieniu
- 19. Azure Redis StackExchange.Redis ConnectionMultiplexer w ASP.NET MVC
- 20. W jaki sposób StackExchange.Redis używa wielu punktów końcowych i połączeń?
- 21. Czy polecenia raw są dostępne w StackExchange.Redis?
- 22. Kliknij przycisk "Ogień" w AngularJS
- 23. StackExchange.Redis - Jak dodać elementy do Redis Zestaw
- 24. jak ogień zdarzenia change w niektóre emberjs
- 25. gwarancji, że rodziny typu będą czerpać pewne klasy
- 26. Jaki jest cel gwarancji standardowego układu dla typów "czarnej skrzynki"?
- 27. Ogień $ ngAnimate Wprowadź po spełnieniu obietnicy
- 28. kątowa zdarzenie 2 ogień po ngFor
- 29. Co Boxen i co robi?
- 30. Co znaczy MYSQLI_NUM i co robi?
Dziękuję. Moje pytanie było w dużej mierze nadal oferuje ponowną próbę albo przez bibliotekę albo bazowy TCP i na podstawie twojej odpowiedzi wydaje się, że tak. – DTown