Pri vykonávaní určitých časovaných operácií potrebujeme spätnú väzbu k výsledkom. Napríklad objednávky sa automaticky mažú po expirácii, objednávky sa automaticky chvália po niekoľkých dňoch, nevyplatené objednávky sa uzatvárajú po 15 minútach a podobne, čo je možné dokončiť pomocou niektorých časovo obmedzených rámcov úloh alebo metód prieskumu. Tento článok využíva mechanizmus upozorňovania na udalosť vypršania cache pomocou pokročilých funkcií Redis v kombinácii s kódom .NET/C# na splnenie obchodných požiadaviek.
Zavedenie
Scenáre použitia: 1. V platobnom biznise sa nezaplatené objednávky automaticky uzatvárajú 2. Pripomienky o expirácii cache
Vo všeobecnosti môžeme použiť časovaciu službu na spracovanie automatického uzatvárania nezaplatených objednávok, napríklad volaním rozhrania každú minútu na spracovanie nezaplatených a expirovaných objednávok, ale v tomto prípade to spotrebuje výkon počítača, aj keď objednávka nie je, bude spracovaná každú minútu a maximálne oneskorenie spracovania objednávky bude 59 sekúnd, pričom časovacia služba musí byť vždy dostupná
Čo teda chceme robiť? Len keď sú nevyplatené a expirované objednávky s nízkou latenciou, môžeme použiť mechanizmus expirácie cache od Redisu na pushovanie predplatného.
Predplatné Redis
Upravte notify-keyspace-events Ex v konfiguračnom súbore redis.conf
Aby sa ušetrili zdroje pohára, notifikácie udalostí nie sú predvolene zapnuté a predvolené je notify-keyspace-events
# Upozornenie na klávesovú medzeru K, s <db>predponou __keyspace@__ # Upozornenie na udalosť klávesu E, s <db>predponou __keysevent@__ # g del, expipre, rename a iné typy všeobecných príkazov, ... # $string príkaz # l Zoznam príkazov #s Nastaviť príkaz # h Hash príkaz # z ordered set príkaz # x Udalosť vypršania (generovaná vždy, keď kľúč vyprší) # e eviction event (generované, keď je kľúč vyčistený, keď je pamäť plná) # Alias g$lshzxe, takže "AKE" znamená všetky udalosti
Notify-keyspace-events "kx" naznačuje, že chcete sledovať udalosti neplatnosti kľúča. Nastavenie parametra na reťazec AKE znamená odosielanie všetkých typov notifikácií.
Nainštaloval som redis ako službu na svojom počítači, upravil konfiguračný súbor redis.windows.conf a musel som reštartovať konfiguráciu služby Redis, aby nadobudla účinnosť.
Príklad kódu .NET/C#
Balík je nasledovný:
vyvolať
Skúsme napísať cache pomocou redis-cli.
V skutočnosti sa môžete prihlásiť na odber oznámení o vypršaní cache vykonaním nasledujúceho príkazu cez redis-cli:
Keď sa N klientov prihlási na oznámenia o udalostiach vypršania cache, redis upozorní N používateľov na tú istú správu o vypršaní, nie len o jednom z klientov, ako je znázornené na obrázku nižšie:
Stiahnutie zdrojového kódu v C#:
https://down.itsvse.com/item/17856.html
súhrn
Redis pub/sub je nespoľahlivý mechanizmus správ, neukladá informácie, iba ich preposiela online, a určite neexistuje žiadny mechanizmus potvrdenia ACK, presmerovaný bude len segment predplatného, takže Keyspace Notifications je tiež nespoľahlivý notifikačný systém, ak náš biznis potrebuje dobrú spoľahlivosť, nie je to najlepšia voľba. Vo všeobecnosti odporúčame DLX (Dead-Letter-Exchange) od RabbitMQ na jeho implementáciu, čo je funkcia oneskorenej fronty. Lenže Redisovo riešenie je jednoduchšie na implementáciu a lacnejšie na prevádzku. Stále je to veľmi pohodlné pre firmy, ktoré nevyžadujú vysokú spoľahlivosť. |