Când efectuăm anumite operațiuni cronometrate, avem nevoie de feedback asupra rezultatelor. De exemplu, comenzile sunt eliminate automat după expirare, comenzile sunt lăudate automat după câteva zile, comenzile neachitate sunt închise după 15 minute etc., ceea ce poate fi realizat folosind anumite cadre de sarcini cronometrate sau metode de interogare. Acest articol folosește mecanismul avansat de notificare a evenimentelor de expirare a cache-ului Redis combinat cu cod .NET/C# pentru a îndeplini cerințele de business.
Introducere
Scenarii de utilizare: 1. În afacerile de plăți, comenzile neachitate sunt închise automat 2. Memento-uri de expirare a cache-ului
În general, putem folosi serviciul de cronometratare pentru a procesa închiderea automată a comenzilor neplătite, cum ar fi să apelăm interfața la fiecare minut pentru a procesa comenzile neplătite și expirate, dar în acest caz va consuma performanța computerului, chiar dacă nu există o comandă, va fi procesată la fiecare minut, iar timpul maxim de procesare a comenzilor va fi de 59s, iar serviciul de cronometratare trebuie să fie mereu disponibil
Deci, ce vrem să facem? Doar atunci când există comenzi neplătite și expirate cu procesare cu latență scăzută, putem folosi mecanismul de expirare cache al Redis pentru a împinge abonamentul.
Abonament Redis
Modifică notify-keyspace-events Ex în fișierul de configurare redis.conf
Pentru a economisi resurse cup, notificările de evenimente nu sunt activate implicit, iar implicit este notify-keyspace-events
# Notificare în spațiul tastelor K, <db>prefixat cu __keyspace@__ # Notificarea evenimentului cheie E, <db>prefixată cu __keysevent@__ # g del, expipre, rename și alte tipuri de comenzi generice, ... # $string comandă # Comandă l List #s Comanda Set # h Comandă Hash # Comanda set ordonat z # x Eveniment de expirare (generat de fiecare dată când o cheie expiră) # Eveniment de evacuare (generat când cheia este ștearsă când memoria este plină) # Un alias g$lshzxe, deci "AKE" înseamnă toate evenimentele
Notify-keyspace-events "KX" indică faptul că doriți să monitorizați evenimentele de invalidare pentru o cheie. Setarea parametrului la șirul AKE înseamnă trimiterea tuturor tipurilor de notificări.
Am instalat redis ca serviciu pe calculatorul meu, am modificat fișierul de configurare redis.windows.conf și a trebuit să repornesc configurația serviciului redis pentru a intra în vigoare.
Exemplu de cod .NET/C#
Pachetul este următorul:
Invoca
Hai să încercăm să scriem un cache cu redis-cli.
De fapt, te poți abona și la notificările de expirare a cache-ului executând următoarea comandă prin redis-cli:
Când N clienți se abonează la notificări de evenimente de expirare în cache, Redis va notifica N utilizatori despre același mesaj de expirare, nu doar unul dintre clienți, așa cum se arată în figura de mai jos:
Descărcare cod sursă C#:
https://down.itsvse.com/item/17856.html
rezumat
Redis pub/sub este un mecanism de mesaje nesigur, nu stochează informații, redirecționează doar online, iar cu siguranță nu există un mecanism de confirmare ack, iar doar segmentul de abonament va fi redirecționat, așa că Keyspace Notifications este și el un sistem de notificări nesigur, dacă afacerea noastră are nevoie de fiabilitate bună, atunci aceasta nu este cea mai bună alegere. În general, recomandăm DLX (Dead-Letter-Exchange) de la RabbitMQ pentru a o implementa, care este funcția de coadă întârziată. Doar că soluția lui Redis este mai ușor de implementat și mai ieftină de operat. Este totuși foarte convenabil pentru afacerile care nu au nevoie de o fiabilitate ridicată. |