sql >> Databáze >  >> NoSQL >> Redis

Zaručuje Stackexchange.Redis vypalování a zapomínání doručení?

Protokol Redis ve skutečnosti nepodporuje operace „vypal a zapomeň“. Kromě provozu typu pub/sub jsou všechny příkazy Redis porovnány s odpovědí a neexistuje způsob, jak říci serveru Redis, aby odpověď vynechal.

Nyní někteří klienti (jako StackExchange.Redis) simulují režim „vypal a zapomeň“ prostřednictvím asynchronní implementace protokolu. Ve skutečnosti je režim „vypal a zapomeň“ v StackExchange.Redis velmi podobný „asynchronnímu“ režimu, až na to, že odpovědi jsou po obdržení jednoduše zahozeny.

Je to spolehlivé? No, garantuje doručení, pokud TCP/IP garantuje doručení. Síť se bude usilovně snažit přenést pakety (nakonec budou pakety přeneseny znovu, pokud se některé z nich ztratí), ale to vše řeší TCP.

Nyní, pokud je server mimo provoz nebo se rozhodnete ukončit připojení, klient si to uvědomí pouze tehdy, když se pokusí číst ze soketu. StackExchange.Redis může vesele pokračovat v odesílání příkazů na mrtvém připojení na chvíli. Pokud máte prostředníka (například Twemproxy), může být situace ještě horší.

Jinými slovy, provoz „vypal a zapomeň“ bude obecně odeslán na server a žádná zpráva se v síti neztratí, ale pokud máte problémy se serverem nebo připojením, může dojít ke ztrátě určitého provozu dříve, než si to klient všimne. to. Nazval bych to chováním při nejlepší snaze.




  1. Hotfix Mongodb KB2731284

  2. MongoDB skupina a součet s id jako klíčem

  3. Jak mohu použít operátor LIKE na mongoose?

  4. MongoDB - Vytvořte zálohu