sql >> Databasteknik >  >> NoSQL >> Redis

Garanterar Stackexchange.Redis' fire and forget leverans?

Egentligen stöder inte Redis-protokollet "eld och glöm"-operationer. Förutom pub-/undertrafik, matchas alla Redis-kommandon med ett svar, och det finns inget sätt att säga åt Redis-servern att utelämna svaret.

Nu simulerar vissa klienter (som StackExchange.Redis) ett "eld och glöm"-läge genom en asynkron implementering av protokollet. Egentligen är läget "eld och glöm" i StackExchange.Redis väldigt likt det "asynkrona" läget, förutom att svaren helt enkelt kasseras när de tas emot.

Är det pålitligt? Tja, det garanterar leveransen så långt som TCP/IP garanterar leveransen. Nätverket kommer att försöka sända paketen (till slut kommer paketen att sändas igen om några av dem går förlorade), men allt detta hanteras av TCP.

Om servern nu är nere, eller beslutar att stänga anslutningen, kommer klienten bara att bli medveten när den försöker läsa från sockeln. StackExchange.Redis kan gärna fortsätta att skicka kommandon på en död anslutning ett tag. Om du har en mellannivå (som Twemproxy) kan situationen bli ännu värre.

Med andra ord, "eld och glöm"-trafik kommer i allmänhet att skickas till servern, och inget meddelande kommer att gå förlorat på nätverket, men om du har server- eller anslutningsproblem kan en del trafik förloras innan klienten har en chans att märka Det. Jag skulle kalla detta ett bästa försök.




  1. Topp MongoDB-resurser

  2. Ladda upp och hämta filer med MongoDB och Spring Boot

  3. Erhålla $gruppresultat med gruppantal

  4. MongoDB $inc