Bizonyos időzített műveletek során visszajelzésre van szükségünk az eredményekről. Például a rendeléseket automatikusan töröljük a lejárat után, a rendeléseket néhány nap múlva automatikusan dicsérik, a kifizetetlen rendeléseket 15 perc után zárják, stb., amelyeket időzített feladatkeretek vagy szavazási módszerek segítségével lehet elvégezni. Ez a cikk a Redis fejlett funkciójának gyorsítótár lejáró eseményértesítési mechanizmusát kombinálja .NET/C# kóddal az üzleti követelmények teljesítéséhez.
Bevezetés
Használati forgatókönyvek: 1. A fizetési üzletben a kifizetetlen megrendelések automatikusan lezáródnak 2. Gyorsítótár lejárati emlékeztetők
Általánosságban az időzítési szolgáltatást használhatjuk az elfizetetlen megrendelések automatikus lezárásának feldolgozására, például minden percben felhívjuk az interfészt a kifizetetlen és lejárt megrendelések feldolgozásához, de ebben az esetben számítógép teljesítményét fogyasztja, még ha nincs is rendelés, percenként feldolgozzák, és a rendelésfeldolgozás maximális késleltetése 59 másodperc lesz, és az időzítő szolgáltatásnak mindig elérhetőnek kell lennie
Mit szeretnénk csinálni csak akkor, ha vannak kifizetetlen és lejárt megrendelések, alacsony késleltetésű feldolgozással, a Redis gyorsítótár lejárati mechanizmusát használhatjuk az előfizetés előzéséhez.
Redis előfizetés
Módosítsuk az ex-et a redis.conf konfigurációs fájlban a notify-keyspace-events Ex
A pohár erőforrások megtakarítása érdekében az eseményértesítések alapértelmezés nélkül nem kapcsolódnak be, és az alapértelmezett a notify-keyspace-events
# K kulcstér értesítés, <db>előtaggal __keyspace@__ # E kulcsú eseményértesítés, <db>előtaggal __keysevent@__ # g del, expipre, rename és más általános parancsok, ... # $string parancs # l Lista parancs #s Parancs beállítása # h Hash parancs # z parancsot állított be # x Lejárási esemény (minden alkalommal generálható, amikor egy kulcs lejár) # e kilakoltatási esemény (akkor generálódik, amikor a kulcs kiürül, amikor a memória megtelt) # Egy g$lshzxe álnév, tehát az "AKE" minden eseményt jelent
a notify-keyspace-events "kx" azt jelzi, hogy egy kulcs érvénytelenítési eseményeit szeretnéd figyelni. Az AKE string paraméter beállítása azt jelenti, hogy mindenféle értesítést küldünk.
Telepítettem a Redis szolgáltatást a gépemre, módosítottam a redis.windows.conf konfigurációs fájlt, és újra kellett indítanom a redis szolgáltatás konfigurációját, hogy belépjen a hatásba.
.NET/C# kód példa
A csomag a következő:
hív
Próbáljunk meg cache-et írni redis-cli-vel.
Valójában előfizethetsz a cache lejárási értesítésekre is, ha a következő parancsot hajtod végre a redis-cli-n keresztül:
Amikor N kliens feliratkozik a cache lejárási esemény értesítéseire, a redis N felhasználót értesít ugyanarról a lejárati üzenetről, nem csak az egyik kliensről, ahogy az alábbi ábrán látható:
C# forráskód letöltés:
https://down.itsvse.com/item/17856.html
összefoglalás
A Redis pub/sub megbízhatatlan üzenetcsatorna, nem tárolja az információkat, csak online továbbítja, és biztosan nincs ACK megerősítő mechanizmus, csak az előfizetéses szegmens kerül továbbításra, így a Keyspace Notifications is megbízhatatlan értesítési rendszer, ha a vállalkozásunknak jó megbízhatóságra van szüksége, akkor ez nem a legjobb választás. Általánosságban a RabbitMQ DLX-jét (Dead-Letter-Exchange) javasoljuk ennek megvalósításához, ami a késleltetett sorban lévő funkció. Csak az a helyzet, hogy a Redis megoldása könnyebben megvalósítható és olcsóbb üzemeltetni. Még mindig nagyon kényelmes azoknak a vállalkozásoknak, amelyek nem igényelnek nagy megbízhatóságot. |