Kun suoritamme tiettyjä ajastettuja operaatioita, tarvitsemme palautetta tuloksista. Esimerkiksi tilaukset poistetaan automaattisesti vanhenemisen jälkeen, tilaukset kehutaan automaattisesti muutaman päivän kuluttua, maksamattomat tilaukset suljetaan 15 minuutin jälkeen jne., jotka voidaan suorittaa ajoitettujen tehtäväkehysten tai kyselymenetelmien avulla. Tässä artikkelissa käytetään Redisin kehittynyttä ominaisuusvälimuistin vanhenemistapahtumailmoitusmekanismia yhdistettynä .NET/C#-koodiin liiketoimintavaatimusten täyttämiseksi.
Johdanto
Käyttötilanteet: 1. Maksuliiketoiminnassa maksamattomat tilaukset suljetaan automaattisesti 2. Välimuistin vanhenemismuistutukset
Yleisesti ottaen voimme käyttää ajoituspalvelua käsittelemään maksamattomien tilausten automaattisen sulkemisen, kuten soittamalla rajapintaan joka minuutti maksamattomien ja vanhentuneiden tilausten käsittelyyn, mutta tässä tapauksessa se kuluttaa tietokoneen suorituskykyä; vaikka tilausta ei olisi, se käsitellään minuutin välein, ja maksimiviive tilauksen käsittelyssä on 59 sekuntia, ja ajoituspalvelun on oltava aina käytettävissä
Mitä siis haluamme tehdä vain, kun on maksamattomia ja vanhentuneita tilauksia, joissa käsittely on matala viive: voimme käyttää Redisin välimuistin vanhenemismekanismia tilauksen työntämiseen.
Redis-tilaus
Muokkaa ilmoitusavaintila-tapahtumia Ex konfiguraatiotiedostossa redis.conf
Kuppiresurssien säästämiseksi tapahtumailmoitukset eivät ole oletuksena päällä, ja oletus on notify-keyspace-events
# K-avainvälimerkintä, <db>etuliite __keyspace@__ # E-avain tapahtumailmoitus, <db>etuliite __keysevent@__ # g del, expipre, uudelleennimeä ja muita yleisiä komentoja, ... # $string käsky # l Lista-komento #s Aseta komento # h Hash-käsky # z käsky asettaa komento # x Vanhenemistapahtuma (joka syntyy aina, kun avain vanhenee) # e häätötapahtuma (syntyy, kun avain tyhjennetään muistin ollessa täynnä) # G$lshzxe-alias, joten "AKE" tarkoittaa kaikkia tapahtumia
notify-keyspace-events "kx" tarkoittaa, että haluat seurata avaimen mitätöintitapahtumia. Parametrin asettaminen merkkijonoon AKE tarkoittaa kaikenlaisten ilmoitusten lähettämistä.
Asensin redisin palveluna koneelleni, muokkasin redis.windows.conf-konfiguraatiotiedostoa ja jouduin käynnistämään redis-palvelun konfiguraatio uudelleen, jotta se astui voimaan.
.NET/C#-koodiesimerkki
Paketti on seuraava:
vedota
Kokeillaan kirjoittaa välimuisti redis-cli:llä.
Itse asiassa voit myös tilata välimuistin vanhenemisilmoitukset suorittamalla seuraavan komennon redis-cli:n kautta:
Kun N asiakasta tilaa välimuistin vanhenemistapahtumailmoitukset, redis ilmoittaa N käyttäjälle samasta vanhenemisviestistä, ei vain yhdelle asiakkaalle, kuten alla olevassa kuvassa on esitetty:
C#-lähdekoodin lataus:
https://down.itsvse.com/item/17856.html
yhteenveto
Redis pub/sub on epäluotettava viestimekanismi, se ei tallenna tietoa, se välittää vain verkkoon, eikä ACK-vahvistusmekanismia ole, ja vain tilaussegmentti ohjataan, joten Keyspace Notifications on myös epäluotettava ilmoitusjärjestelmä. Jos yrityksemme tarvitsee hyvää luotettavuutta, tämä ei ole paras valinta. Yleisesti suosittelemme RabbitMQ:n DLX:ää (Dead-Letter-Exchange) sen toteuttamiseen, joka on viivästetyn jonon toiminto. Ongelma on vain siinä, että Redisin ratkaisu on helpompi toteuttaa ja edullisempi käyttää. Se on edelleen erittäin kätevä yrityksille, jotka eivät vaadi korkeaa luotettavuutta. |