Pri izvajanju določenih časovno omejenih operacij potrebujemo povratne informacije o rezultatih. Na primer, naročila se samodejno izbrišejo po poteku, naročila se samodejno pohvalijo po nekaj dneh, neplačana naročila se zaprejo po 15 minutah itd., kar je mogoče dokončati z uporabo časovno omejenih opravil ali metod anketiranja. Ta članek uporablja mehanizem obveščanja o poteku predpomnilnika Redis napredne funkcije v kombinaciji z .NET/C# kodo za izpolnjevanje poslovnih zahtev.
Uvod
Scenariji uporabe: 1. V plačilnem poslu se neplačana naročila samodejno zaprejo 2. Opomniki za potek predpomnilnika
Na splošno lahko uporabimo storitev časovnega usklajevanja za samodejno zapiranje neplačanih naročil, na primer klicanje vmesnika vsako minuto za obdelavo neplačanih in poteklih naročil, vendar v tem primeru porabi računalniško zmogljivost, tudi če naročila ni, se bo obdelovalo vsako minuto, največja zamuda pri obdelavi naročila pa je 59 sekund, storitev časovnega usklajevanja pa mora biti vedno na voljo
Kaj torej želimo storiti le, ko so neplačana in potekla naročila z nizko zakasnitvijo, lahko uporabimo Redisov mehanizem poteka predpomnilnika za potiskanje naročnine.
Naročnina na Redis
Spremenite notify-keyspace-events Ex v konfiguracijski datoteki redis.conf
Da bi prihranili vire pokala, obvestila o dogodkih privzeto niso vklopljena, privzeto pa je notify-keyspace-events
# Obvestilo o presledku tipk K, <db>s predpono __keyspace@__ # Obvestilo o dogodku tipke E, <db>s predpono __keysevent@__ # g del, expipre, rename in druge vrste generičnih ukazov, ... # $string ukaz # l Seznam ukazov #s Nastavi ukaz # h Hash ukaz # z ordered set ukaz # x Dogodek poteka (generira se vsakič, ko ključ poteče) # e dogodek izselitve (ustvarjen, ko je ključ izbrisan, ko je pomnilnik poln) # Vzdevek g$lshzxe, torej "AKE" pomeni vse dogodke
notify-keyspace-events "kx" označuje, da želite spremljati dogodke razveljavitve ključa. Nastavitev parametra na niz AKE pomeni pošiljanje vseh vrst obvestil.
Namestil sem redis kot storitev na svoj računalnik, spremenil konfiguracijsko datoteko redis.windows.conf in moral ponovno zagnati konfiguracijo storitve Redis, da je začela veljati.
Primer kode .NET/C#
Paket je naslednji:
Sklicevati
Poskusimo napisati predpomnilnik z redis-cli.
Pravzaprav se lahko naročite tudi na obvestila o poteku predpomnilnika z izvajanjem naslednjega ukaza preko redis-cli:
Ko se N odjemalcev naroči na obvestila o poteku dogodkov predpomnilnika, redis obvesti N uporabnikov o istem sporočilu o poteku, ne le enega od odjemalcev, kot je prikazano na spodnji sliki:
Prenos izvorne kode v C#:
https://down.itsvse.com/item/17856.html
Povzetek
Redis pub/sub je nezanesljiv mehanizem za sporočila, ne shranjuje informacij, posreduje jih le na spletu, zagotovo ni mehanizma za potrditev ack, posreduje se le segment naročnine, zato je Keyspace Notifications tudi nezanesljiv sistem za obveščanje, če naše podjetje potrebuje dobro zanesljivost, potem to ni najboljša izbira. Na splošno priporočamo RabbitMQ-jev DLX (Dead-Letter-Exchange) za njegovo implementacijo, ki je funkcija zamikane vrste. Gre le za to, da je Redisova rešitev lažja za izvedbo in cenejša za uporabo. Še vedno je zelo priročna za podjetja, ki ne zahtevajo visoke zanesljivosti. |