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

Redis Pub/Sub med pålidelighed

Når en abonnent (forbruger) dør, vil din liste fortsætte med at vokse, indtil kunden vender tilbage. Din producent kunne trimme listen (fra begge sider), når den når en specifik grænse, men det er noget, du skal håndtere på applikationsniveau. Hvis du inkluderer et tidsstempel i hver meddelelse, kan din forbruger derefter handle ud fra en meddelelses alder, forudsat at du har en applikationslogik, du vil håndhæve på meddelelsens alder.

Jeg er ikke sikker på, hvordan en forkert udformet meddelelse ville komme ind i systemet, da forbindelsen til Redis normalt er TCP med dets integritetsgarantier. Men hvis dette sker, måske på grund af en fejl i meddelelseskodningen på producentlaget, kan du give en generel mekanisme til håndtering af fejl ved at holde en kø pr. producent, der modtog forbrugerens undtagelsesmeddelelser.

Politikker for genforsøg afhænger i høj grad af dine applikationsbehov. Hvis du har brug for 100 % sikkerhed for, at en meddelelse er blevet modtaget og behandlet, bør du overveje at bruge Redis-transaktioner (MULTI/EXEC) til at pakke det arbejde, som en forbruger har udført, så du kan sikre, at en klient ikke fjerner en meddelelse, medmindre den har fuldført sit arbejde. Hvis du har brug for eksplicit bekræftelse, kan du bruge en eksplicit ACK-meddelelse i en kø, der er dedikeret til producentprocessen.

Uden at vide mere om dine applikationsbehov er det svært at vide, hvordan man vælger klogt. Generelt, hvis dine beskeder kræver fuld ACID-beskyttelse, skal du sandsynligvis også bruge redis-transaktioner. Hvis dine beskeder kun er meningsfulde, når de er rettidige, er transaktioner muligvis ikke nødvendige. Det lyder som om du ikke kan tolerere tabte beskeder, så din tilgang til at bruge en liste er god. Hvis du har brug for at implementere en prioritetskø for dine beskeder, kan du bruge det sorterede sæt (Z-kommandoerne) til at gemme dine beskeder, ved at bruge deres prioritet som scoreværdi, sammen med en afstemningsforbruger.



  1. MongoDB vs MySQL

  2. Java konvertere bytes til binær sikker streng

  3. redis:sikkerhedskopiering af dump.rdb

  4. Sådan implementeres Redis Multi-Exec ved at bruge Spring-data-Redis