Podczas wykonywania niektórych operacji czasowych potrzebujemy informacji zwrotnej na temat wyników. Na przykład zamówienia są automatycznie usuwane po wygaśnięciu terminu, zamówienia automatycznie chwalone po kilku dniach, nieopłacone po 15 minutach itd., co można realizować za pomocą niektórych ram zadań czasowych lub metod ankietowania. Niniejszy artykuł wykorzystuje mechanizm powiadomienia o zdarzeniu wygaśnięcia pamięci podręcznej Redis w połączeniu z kodem .NET/C# do realizacji wymagań biznesowych.
Wprowadzenie
Scenariusze użytkowania: 1. W branży płatniczej nieopłacone zlecenia są automatycznie zamykane 2. Przypomnienia o wygaśnięciu pamięci podręcznej
Ogólnie rzecz biorąc, możemy użyć usługi timeringu do automatycznego zamknięcia nieopłaconych zleceń, na przykład wywołując interfejs co minutę, aby przetworzyć nieopłacone i wygasłe zamówienia, ale w takim przypadku zużywa to wydajność komputera, nawet jeśli nie ma zamówienia, będzie ono przetwarzane co minutę, a maksymalne opóźnienie w realizacji zamówienia wyniesie 59 sekund, a usługa timeringu musi być zawsze dostępna
Co więc chcemy zrobić? Tylko wtedy, gdy są nieopłacone i wygasłe zamówienia z niskim opóźnieniem przetwarzaniem, możemy użyć mechanizmu wygaśnięcia pamięci podręcznej Redis, aby wypchnąć subskrypcję.
Subskrypcja Redis
Zmodyfikuj notify-keyspace-events Ex w pliku konfiguracyjnym redis.conf
Aby oszczędzać zasoby kubka, powiadomienia o zdarzeniach nie są domyślnie włączone, a domyślne to notify-keyspace-events
# Powiadomienie o spacji K, z <db>prefiksem __keyspace@__ # Powiadomienie o zdarzeniu E, z <db>prefiksem __keysevent@__ # g del, expipre, rename i inne rodzaje ogólnych poleceń, ... # $string rozkaz # l List command #s Ustaw komendę # h Polecenie skrótu # z order set command # x Zdarzenie wygaśnięcia (generowane za każdym razem, gdy klucz wygasa) # e Ewakuacja (generowana, gdy klucz jest czyszczony, gdy pamięć jest pełna) # Pseudonim g$lshzxe, więc "AKE" oznacza wszystkie zdarzenia
Notify-keyspace-events "kx" oznacza, że chcesz monitorować zdarzenia unieważnienia dla danego klucza. Ustawienie parametru na ciąg AKE oznacza wysyłanie wszystkich typów powiadomień.
Zainstalowałem redis jako usługę na moim komputerze, zmodyfikowałem plik konfiguracyjny redis.windows.conf i musiałem zrestartować konfigurację usługi redis, aby zadziałała.
Przykład kodu .NET/C#
Pakiet przedstawia się następująco:
wywołać
Spróbujmy napisać cache z redis-cli.
W rzeczywistości możesz także subskrybować powiadomienia o wygaśnięciu pamięci podręcznej, wykonując następujące polecenie za pomocą redis-cli:
Gdy N klientów subskrybuje powiadomienia o zdarzeniu wygaśnięcia pamięci podręcznej, redis powiadomi N użytkowników o tym samym komunikatie o wygaśnięciu danych, a nie tylko o jednym z klientów, jak pokazano na poniższym rysunku:
Pobranie kodu źródłowego w C#:
https://down.itsvse.com/item/17856.html
streszczenie
Redis pub/sub to niewiarygodny mechanizm wiadomości, nie przechowuje informacji, tylko przekierowuje online, nie ma mechanizmu potwierdzania ack i przekierowany będzie tylko segment subskrypcji, więc powiadomienia w przestrzeni kluczy to również zawodny system powiadomień, jeśli nasza firma potrzebuje dobrej niezawodności, to nie jest najlepszy wybór. Zazwyczaj zalecamy DLX (Dead-Letter-Exchange) w RabbitMQ do implementacji, czyli funkcję opóźnionej kolejki. Po prostu rozwiązanie Redis jest łatwiejsze do wdrożenia i tańsze w eksploatacji. Wciąż jest to bardzo wygodne dla firm, które nie wymagają wysokiej niezawodności. |