När vi utför vissa tidsbestämda operationer behöver vi återkoppling på resultaten. Till exempel raderas beställningar automatiskt efter utgångsdatum, beställningar beröms automatiskt efter några dagar, obetalda beställningar stängs efter 15 minuter, etc., vilket kan slutföras med vissa tidsstyrda uppgiftsramverk eller pollingmetoder. Denna artikel använder Redis avancerade funktionscache-slutdatumsnotifieringsmekanism kombinerat med .NET/C#-kod för att slutföra affärskrav.
Införandet
Användningsscenarier: 1. Inom betalningsbranschen stängs obetalda beställningar automatiskt 2. Påminnelser om cachens utgångsdatum
Generellt kan vi använda tidstjänsten för att hantera automatisk avslutning av obetalda order, till exempel genom att anropa gränssnittet varje minut för att behandla obetalda och utgångna beställningar, men i detta fall kommer det att förbruka datorns prestanda, även om det inte finns någon order, den kommer att behandlas varje minut, och den maximala fördröjningen för orderhanteringstiden kommer att vara 59 sekunder, och tidstjänsten måste alltid vara tillgänglig
Så vad vill vi göra när det finns obetalda och utgångna beställningar med låg latensbehandling, vi kan använda Redis cache-utgångsmekanisme för att pusha prenumerationen.
Redis-prenumeration
Modifiera notify-keyspace-events Ex i konfigurationsfilen redis.conf
För att spara koppresurser är händelsenotiser inte aktiverade som standard, och standardmeddelandet är notify-keyspace-events
# K nyckelrymdsnotifikation, <db>prefixerad med __keyspace@__ # E-nyckelhändelsenotis, <db>prefixerad med __keysevent@__ # g del, expipre, rename och andra typer av generiska kommandon, ... # $string befaller # L Listkommando #s Sätt kommandot # h Hash-kommando # z ordnad set-kommando # x Utgångshändelse (genereras varje gång en nyckel går ut) # e utkastningshändelse (genereras när nyckeln rensas när minnet är fullt) # Ett g$lshzxe alias, så "AKE" betyder alla händelser
Notify-Keyspace-Events "KX" indikerar att du vill övervaka ogiltigförklaringshändelser för en nyckel. Att sätta parametern till strängen AKE innebär att skicka alla typer av notifikationer.
Jag installerade redis as a service på min dator, ändrade konfigurationsfilen redis.windows.conf och behövde starta om konfigurationen av redis för att den skulle träda i kraft.
.NET/C#-kodexempel
Paketet är följande:
åkalla
Låt oss försöka skriva en cache med redis-cli.
Faktum är att du också kan prenumerera på cache-utgångsnotiser genom att utföra följande kommando via redis-cli:
När N klienter prenumererar på cache-utgångshändelsenotiser, kommer Redis att meddela N användare om samma utgångsmeddelande, inte bara en av klienterna, som visas i figuren nedan:
Nedladdning av C#-källkod:
https://down.itsvse.com/item/17856.html
sammanfattning
Redis pub/sub är en opålitlig meddelandemekanism, den lagrar inte information, vidarebefordrar bara online, och det finns definitivt ingen ack-bekräftelsemekanism, och endast prenumerationssegmentet kommer att vidarebefordras, så Keyspace Notifications är också ett opålitligt notifikationssystem, om vårt företag behöver bra tillförlitlighet är detta inte det bästa valet. Generellt rekommenderar vi RabbitMQ:s DLX (Dead-Letter-Exchange) för att implementera den, vilket är den fördröjda köfunktionen. Det är bara det att Vedis lösning är lättare att implementera och billigare att använda. Det är fortfarande mycket bekvämt för företag som inte kräver hög tillförlitlighet. |