Når vi udfører visse tidsbestemte operationer, har vi brug for feedback på resultaterne. For eksempel slettes ordrer automatisk efter udløb, ordrer bliver automatisk rost efter få dage, ubetalte ordrer lukkes efter 15 minutter osv., hvilket kan gennemføres ved hjælp af nogle tidsbestemte task-rammer eller polling-metoder. Denne artikel bruger Redis avancerede feature cache udløbshændelsesmeddelelsesmekanisme kombineret med .NET/C#-kode til at opfylde forretningskrav.
Indførelsen
Brugsscenarier: 1. I betalingsbranchen lukkes ubetalte ordrer automatisk 2. Cache-udløbspåmindelser
Generelt kan vi bruge tidstjenesten til automatisk lukning af ubetalte ordrer, såsom at kalde interfacet hvert minut for at behandle ubetalte og udløbne ordrer, men i dette tilfælde vil det forbruge computerens ydeevne, selv hvis der ikke er nogen ordre, behandles den hvert minut, og den maksimale forsinkelse for ordrebehandlingstiden vil være 59 sekunder, og timing-tjenesten skal altid være tilgængelig
Så hvad vil vi gøre? Når der er ubetalte og udløbne ordrer med lav latenstid? Vi kan bruge Redis' cache-udløbsmekanisme til at presse abonnementet.
Redis-abonnement
Ændr notify-keyspace-events Ex i konfigurationsfilen redis.conf
For at spare koppens ressourcer er begivenhedsnotifikationer ikke slået til som standard, og standarden er notify-keyspace-events
# K tastepladsnotifikation, <db>foranstillet med __keyspace@__ # E-nøglebegivenhedsnotifikation, <db>foranstillet med __keysevent@__ # g del, expipre, omdøb og andre typer generiske kommandoer, ... # $string kommando # L List kommando #s Sæt kommando # h Hash-kommando # z ordnet set-kommando # x udløbsbegivenhed (genereret hver gang en nøgle udløber) # e udsættelsesbegivenhed (genereres, når nøglen er ryddet, når hukommelsen er fuld) # Et g$lshzxe alias, så "AKE" betyder alle begivenheder
Notify-Keyspace-events "KX" angiver, at du vil overvåge for ugyldiggørelseshændelser for en nøgle. At sætte parameteren til strengen AKE betyder, at alle typer notifikationer skal sendes.
Jeg installerede redis som en service på min maskine, ændrede redis.windows.conf-konfigurationsfilen og måtte genstarte redis-servicekonfigurationen for at træde i kraft.
.NET/C#-kodeeksempel
Pakken er som følger:
Påberåbe sig
Lad os prøve at skrive en cache med redis-cli.
Faktisk kan du også abonnere på cache-udløbsmeddelelser ved at udføre følgende kommando via redis-cli:
Når N klienter abonnerer på cache-udløbshændelsesmeddelelser, vil Redis underrette N brugere om den samme udløbsmeddelelse, ikke kun én af klienterne, som vist i figuren nedenfor:
C# kildekode download:
https://down.itsvse.com/item/17856.html
resumé
Redis pub/sub er en upålidelig beskedmekanisme, den gemmer ikke information, videresender kun online, og der findes bestemt ingen ack-bekræftelsesmekanisme, og kun abonnementssegmentet vil blive videresendt, så Keyspace Notifications er også et upålideligt notifikationssystem; hvis vores virksomhed har brug for god pålidelighed, er det ikke det bedste valg. Generelt anbefaler vi RabbitMQ's DLX (Dead-Letter-Exchange) til at implementere det, som er den forsinkede køfunktion. Det er bare, at Redis' løsning er lettere at implementere og billigere at drive. Det er stadig meget bekvemt for virksomheder, der ikke kræver høj pålidelighed. |