Atliekant tam tikras operacijas pagal laiką, mums reikia grįžtamojo ryšio apie rezultatus. Pavyzdžiui, užsakymai automatiškai ištrinami pasibaigus galiojimo laikui, užsakymai automatiškai giriami po kelių dienų, neapmokėti užsakymai uždaromi po 15 minučių ir t. t., kuriuos galima atlikti naudojant tam tikras laiko užduočių sistemas ar apklausos metodus. Šiame straipsnyje naudojamas "Redis" išplėstinių funkcijų talpyklos galiojimo pabaigos įvykių pranešimo mechanizmas kartu su .NET/C# kodu, kad būtų įvykdyti verslo reikalavimai.
Įvadas
Naudojimo scenarijai: 1. Mokėjimų versle neapmokėti užsakymai automatiškai uždaromi 2. Talpyklos galiojimo pabaigos priminimai
Apskritai, mes galime naudoti laiko paslaugą, kad apdorotume automatinį neapmokėtų užsakymų uždarymą, pvz., skambindami į sąsają kas minutę, kad apdorotume neapmokėtus ir pasibaigusius užsakymus, tačiau tokiu atveju tai sunaudos kompiuterio našumą, net jei nėra užsakymo, jis bus apdorojamas kas minutę, o maksimalus užsakymo apdorojimo laikas bus 59 s, o laiko nustatymo paslauga turi būti visada prieinama
Taigi, ką norime daryti tik tada, kai yra neapmokėtų ir pasibaigusių užsakymų su mažu delsos apdorojimu, galime naudoti "Redis" talpyklos galiojimo pabaigos mechanizmą, kad stumtume prenumeratą.
Redis prenumerata
Pakeiskite notify-keyspace-events Ex konfigūracijos faile redis.conf
Siekiant taupyti taurės išteklius, pranešimai apie įvykius nėra įjungti pagal numatytuosius nustatymus, o numatytasis yra notify-keyspace-events
# K klavišų tarpo pranešimas, <db>priešdėlis __keyspace@__ # E rakto pranešimas apie įvykį, <db>priešdėlis __keysevent@__ # g del, expipre, pervardyti ir kitų tipų bendrosios komandos, ... # $string komanda # l Sąrašo komanda #s Nustatyti komandą # h Maišos komanda # z užsakyta komanda nustatyti # x Galiojimo pabaigos įvykis (sugeneruojamas kiekvieną kartą, kai baigiasi rakto galiojimo laikas) # E iškeldinimo įvykis (sugeneruojamas, kai raktas išvalomas, kai atmintis pilna) # g$lshzxe slapyvardžiu, taigi "AKE" reiškia visus įvykius
notify-keyspace-events "kx" nurodo, kad norite stebėti rakto negaliojimo įvykius. Parametro nustatymas į eilutę AKE reiškia visų tipų pranešimų siuntimą.
Įdiegiau redis kaip paslaugą savo kompiuteryje, pakeičiau redis.windows.conf konfigūracijos failą ir turėjau iš naujo paleisti redis paslaugos konfigūraciją, kad įsigaliotų.
.NET/C# kodo pavyzdys
Paketas yra toks:
Remtis
Pabandykime parašyti talpyklą su redis-cli.
Tiesą sakant, taip pat galite užsiprenumeruoti talpyklos pranešimus apie galiojimo laiką vykdydami šią komandą per redis-cli:
Kai N klientai užsiprenumeruoja talpyklos galiojimo pabaigos įvykių pranešimus, redis praneš N vartotojams apie tą patį galiojimo pranešimą, o ne tik vieną iš klientų, kaip parodyta paveikslėlyje žemiau:
C# šaltinio kodo atsisiuntimas:
https://down.itsvse.com/item/17856.html
suvestinė
"Redis pub/sub" yra nepatikimas pranešimų mechanizmas, jis nesaugos informacijos, bus persiųstas tik internetu, o patvirtinimo mechanizmo tikrai nėra, o bus persiųstas tik prenumeratos segmentas, todėl "Keyspace Notifications" taip pat yra nepatikima pranešimų sistema, jei mūsų verslui reikia gero patikimumo, tai nėra geriausias pasirinkimas. Paprastai rekomenduojame jį įdiegti RabbitMQ DLX (Dead-Letter-Exchange), kuris yra atidėtos eilės funkcija. Tiesiog "Redis" sprendimas yra lengviau įgyvendinamas ir pigesnis. Tai vis dar labai patogu įmonėms, kurioms nereikia didelio patikimumo. |