Při provádění určitých časovaných operací potřebujeme zpětnou vazbu k výsledkům. Například objednávky jsou automaticky mazány po expiraci, objednávky jsou automaticky chváleny po několika dnech, nevyplacené objednávky jsou uzavřeny po 15 minutách atd., což lze dokončit pomocí některých časovaných rámců úkolů nebo metod průzkumu. Tento článek využívá mechanismus upozornění na událost expirace cache v rámci Redis s kódem .NET/C# k vyplnění obchodních požadavků.
Úvod
Scénáře použití: 1. V platební byznysu jsou nezaplacené objednávky automaticky uzavřeny 2. Připomínky vypršení cache
Obecně můžeme službu časování využít k automatickému uzavření nezaplacených příkazů, například voláním rozhraní každou minutu pro zpracování nezaplacených a expirovaných příkazů, ale v tomto případě to spotřebuje výkon počítače, i když objednávka není, bude zpracována každou minutu a maximální zpoždění zpracování objednávky bude 59 sekund, přičemž služba pro časování musí být vždy dostupná
Co tedy chceme dělat? Až když jsou nezaplacené a expirované objednávky s nízkou latencí zpracování, můžeme použít mechanismus expirace cache od Redis k posunutí předplatného.
Předplatné Redis
Upravte notify-keyspace-events Ex v konfiguračním souboru redis.conf
Aby se šetřily zdroje cupu, nejsou oznámení o událostech ve výchozím nastavení zapnuta a výchozí je notify-keyspace-events
# Oznámení o mezeru kláves K, <db>předpona __keyspace@__ # Oznámení o události klávesy E, s <db>předponou __keysevent@__ # g del, expipre, rename a další typy obecných příkazů, ... # $string příkaz # l Seznam příkazů #s Nastavit příkaz # h Hash příkaz # z ordered set command # x Událost vypršení platnosti (generováno pokaždé, když klíč vyprší) # e Evaviction Event (generováno, když je klíč vymazán, když je paměť plná) # Alias g$lshzxe, takže "AKE" znamená všechny události
Notify-keyspace-events "kx" znamená, že chcete sledovat události zneplatnění klíče. Nastavení parametru na řetězec AKE znamená odesílání všech typů oznámení.
Nainstaloval jsem redis jako službu na svém počítači, upravil konfigurační soubor redis.windows.conf a musel jsem restartovat konfiguraci služby Redis, aby se to projevilo.
Příklad kódu .NET/C#
Balíček je následující:
vyvolat
Zkusme napsat cache pomocí redis-cli.
Ve skutečnosti se můžete také přihlásit k odběru oznámení o vypršení cache provedením následujícího příkazu pomocí redis-cli:
Když se N klientů přihlásí k oznámení o událostech expirace cache, redis upozorní N uživatelů na stejnou zprávu o vypršení platnosti, nikoli pouze o jednom z klientů, jak je znázorněno na obrázku níže:
Stažení zdrojového kódu v C#:
https://down.itsvse.com/item/17856.html
shrnutí
Redis pub/sub je nespolehlivý mechanismus zpráv, neukládá informace, přeposílá pouze online, rozhodně neexistuje žádný mechanismus potvrzení akreditace, přesměrován je pouze segment předplatného, takže Keyspace Notifications je také nespolehlivý systém notifikací, pokud naše firma potřebuje dobrou spolehlivost, není to nejlepší volba. Obecně doporučujeme DLX (Dead-Letter-Exchange) od RabbitMQ k implementaci, což je funkce delayed queue. Jde jen o to, že Redisovo řešení je jednodušší na implementaci a levnější na provoz. Stále je velmi pohodlný pro firmy, které nevyžadují vysokou spolehlivost. |