Når vi utfører visse tidsbestemte operasjoner, trenger vi tilbakemelding på resultatene. For eksempel slettes ordrer automatisk etter utløp, ordrer blir automatisk rost etter noen dager, ubetalte ordrer stenges etter 15 minutter, osv., noe som kan fullføres ved hjelp av noen tidsbestemte oppgaverammer eller pollingmetoder. Denne artikkelen bruker Redis avanserte funksjonscache-utløpshendelsesvarslingsmekanisme kombinert med .NET/C#-kode for å fullføre forretningskrav.
Introduksjon
Bruksscenarier: 1. I betalingsbransjen lukkes ubetalte ordrer automatisk 2. Påminnelser om cache-utløp
Generelt kan vi bruke tidstjenesten til å behandle automatisk stenging av ubetalte ordrer, som å kalle grensesnittet hvert minutt for å behandle ubetalte og utgåtte ordrer, men i dette tilfellet vil det bruke datamaskinens ytelse, selv om det ikke er noen ordre, vil den bli behandlet hvert minutt, og maksimal forsinkelse i ordrebehandlingstiden vil være 59 sekunder, og tidstjenesten må alltid være tilgjengelig
Så hva vil vi gjøre når det er ubetalte og utløpte bestillinger med lav latensbehandling? Vi kan bruke Redis' cache-utløpsmekanisme for å pushe abonnementet.
Redis-abonnement
Endre notify-keyspace-events Ex i konfigurasjonsfilen redis.conf
For å spare koppressurser er hendelsesvarsler ikke aktivert som standard, og standarden er notify-keyspace-events
# K-tasteområdevarsling, <db>prefikset med __keyspace@__ # E-nøkkelhendelsesvarsel, <db>med prefikset __keysevent@__ # g del, expipre, rename og andre typer generiske kommandoer, ... # $string kommando # L List kommando #s Sett kommando # h Hash-kommando # z ordnet sett-kommando # x Utløpshendelse (generert hver gang en nøkkel utløper) # e utkastelseshendelse (generert når nøkkelen slettes når minnet er fullt) # Et g$lshzxe alias, så "AKE" betyr alle hendelser
Notify-Keyspace-events "KX" indikerer at du vil overvåke for ugyldiggjøringshendelser for en nøkkel. Å sette parameteren til strengen AKE betyr å sende alle typer varsler.
Jeg installerte redis as a service på maskinen min, endret redis.windows.conf-konfigurasjonsfilen, og måtte starte redis-tjenestekonfigurasjonen på nytt for at den skulle tre i kraft.
.NET/C#-kodeeksempel
Pakken er som følger:
påkalle
La oss prøve å skrive en cache med redis-cli.
Faktisk kan du også abonnere på varsler om cache-utløp ved å utføre følgende kommando via redis-cli:
Når N klienter abonnerer på varsler om cache-utløpshendelser, vil redis varsle N brukere om samme utløpsmelding, ikke bare én av klientene, som vist i figuren nedenfor:
Nedlasting av C# kildekode:
https://down.itsvse.com/item/17856.html
sammendrag
Redis pub/sub er en upålitelig meldingsmekanisme, den lagrer ikke informasjon, videresender kun online, og det finnes definitivt ingen ack-bekreftelsesmekanisme, og kun abonnementssegmentet vil bli videresendt, så Keyspace Notifications er også et upålitelig varslingssystem, hvis virksomheten vår trenger god pålitelighet, er ikke dette det beste valget. Generelt anbefaler vi RabbitMQs DLX (Dead-Letter-Exchange) for å implementere dette, som er den forsinkede køfunksjonen. Det er bare det at Redis' løsning er enklere å implementere og rimeligere å drive. Det er fortsatt veldig praktisk for bedrifter som ikke krever høy pålitelighet. |