sql >> Database teknologi >  >> NoSQL >> Redis

Redis, vil et emne (pub/sub) altid blive leveret til mindst én abonnent?

Pub/Sub er synkron kommunikation. Alle parter skal være aktive på samme tid for at kunne kommunikere. Her er Redis en ren synkron meddelelsesmægler.

Svaret på dine første tre spørgsmål er nej. Der er ingen persistens af meddelelserne, ikke på disken, ikke i hukommelsen. Når en besked udgives, sendes den til de klientforbindelser, der abonnerer på i øjeblikket. PUBLISH-kommandoen returnerer straks antallet af klienter, der modtog beskeden:O(N+M) hvor N er antallet af klienter, der abonnerer på den modtagende kanal, og M er det samlede antal abonnerede mønstre (af enhver klient).

... men jeg bemærker, at hvis jeg er nede og genopretter forbindelsen, kan jeg få emnerne leveret, når jeg går online igen

R/ Det afhænger vel af, hvad du mener med "Jeg er nede ". Meddelelsen skal være cachelagret et sted i din klient. Eller måske var klientforbindelsen i Redis Server stadig i live, og beskeden var der i klientoutputbufferen.

Du kan finde disse ressourcer nyttige:

Hvad er de vigtigste forskelle mellem Redis Pub/Sub og Redis Stream?

Pub/Sub




  1. Kan du ikke få resultater fra Redis ved hjælp af Crud Repository i Spring Boot?

  2. Hvordan gemmer og henter man streng med accenter i redis?

  3. MongoDB estimatedDocumentCount()

  4. Vedvarende data fra Redis til MongoDB til datalager