Pamięci podręczne i pamięć podręczna Redis
Niezwykle ważne jest, aby aplikacje szybko reagowały na żądania użytkowników. Gdy witryna internetowa jest powolna, odwiedzający szybko się sfrustrują i opuszczą Twoją witrynę, być może odwiedzić swoich konkurentów. Jak można utworzyć aplikację, która szybko reaguje, nawet jeśli zażądano złożonego zestawu danych? Jednym ze sposobów przyspieszenia aplikacji jest użycie pamięci podręcznej.
Wyobraź sobie, że pracujesz dla sprzedawcy sprzętu zewnętrznego. Nowa aplikacja internetowa jest opracowywana, a kilka mikrousług zbliża się do ich pierwszej wersji, ale niektóre strony ładują się zbyt wolno. Chcesz znaleźć sposób na zwiększenie ich wydajności.
W tej lekcji dowiesz się, jak buforowanie może pomóc zwiększyć szybkość aplikacji internetowej.
Co to jest usługa Redis?
Redis to magazyn informacji w pamięci typu open source. Jego nazwa jest krótka dla serwera słownika zdalnego. Być może najważniejszą funkcją usługi Redis jest małe opóźnienie zarówno w przypadku operacji odczytu, jak i zapisu, które osiąga dzięki jego projektowi i faktowi, że przechowuje wszystkie informacje w pamięci. Usługa Redis zawiera funkcje brokera baz danych i komunikatów, ale jest powszechnie rozpoznawana jako system buforowania.
Jak pamięć podręczna poprawia wydajność
Pamięci podręczne mogą służyć do poprawy wydajności wielu systemów, które zajmują trochę czasu na konstruowanie odpowiedzi dla użytkowników. Rozważmy na przykład witrynę internetową handlu elektronicznego utworzoną na podstawie mikrousług. Gdy użytkownik chce wiedzieć, jakie elementy znajdują się w koszyku, system może:
- Odbierz żądanie w mikrousłudze aplikacji internetowej.
- Wywołaj mikrousługę uwierzytelniania, aby sprawdzić tożsamość użytkowników, jeśli są zalogowani.
- Zadzwoń do mikrousługi koszyka zakupów, aby dowiedzieć się, jakie elementy i jakie ilości znajdują się w koszyku.
- Wywołaj mikrousługę wykazu produktów, aby uzyskać pełne szczegóły każdego produktu.
- Wywołaj mikrousługę obrazów, aby uzyskać obiekty blob obrazu dla każdego produktu.
- Wywołaj akcji biorącej mikrousługę, aby sprawdzić poziomy zapasów.
- Wywołaj mikrousługę wysyłkową, aby obliczyć koszty wysyłki dla lokalizacji i preferencji użytkownika.
Dokładne kroki mogą się różnić w zależności od projektu i funkcjonalności biznesowej, ale widać, że proces może być złożony i obejmować wiele oddzielnych mikrousług i usług zapasowych. Mimo że każda mikrousługa powinna być skonfigurowana i zasób w celu dobrego działania, konstrukcja odpowiedzi nieuchronnie zużywa trochę czasu.
Teraz wyobraź sobie, że użytkownik odświeża stronę. Zamiast rekonstruować całą odpowiedź HTML od podstaw, jeśli strona lub jego części były przechowywane w pamięci podręcznej, może zostać zwrócona użytkownikowi znacznie szybciej niż oryginalne żądanie. Ta szybka odpowiedź pomaga zwiększyć elastyczność i przyjazną aplikację internetową dla użytkowników.
Zagadnienia dotyczące pamięci podręcznej
W przypadku korzystania z buforowania kluczowa decyzja projektowa polega na tym, jak długo buforować określony element zawartości. Na przykład w koszyku zakupów, jeśli strona ukończonego koszyka została umieszczona w pamięci podręcznej przez godzinę, podczas której prawdopodobnie zostaną złożone inne zamówienia, buforowana strona będzie czasami zgłaszać nieaktualne poziomy zapasów, a użytkownicy mogą czekać dłużej niż oczekiwano na dostawę. Jeśli buforujesz stronę przez tylko jedną minutę, możesz być bardziej pewny, że poziomy zapasów będą dokładne, ale może być mało widoczne, aby nie poprawić wydajności. W związku z tym podczas wybierania czasu buforowania informacji należy wziąć pod uwagę:
- Jak często zmieniają się informacje? Na przykład poziomy zapasów mogą zmieniać się wiele godzin w ciągu godziny, ale nowe produkty mogą pojawiać się tylko w wykazie co kilka miesięcy.
- Jak ważne jest, aby użytkownicy widzieli aktualne informacje? Na przykład poziomy zapasów mogą być podstawowe, ale możesz rozważyć, że nowe recenzje produktów będą mniej krytyczne dla czasu.
- Jak często otrzymujesz żądania dotyczące tych informacji? Buforowanie popularnych informacji daje większą wydajność, ponieważ system może obsługiwać go z pamięci podręcznej wiele razy.
Korzystanie z usługi Redis w projektach programu .NET Aspire
Usługa Redis jest popularnym wyborem do buforowania w aplikacji natywnej dla chmury. Platforma .NET Aspire udostępnia trzy składniki, których można użyć do interakcji z usługą Redis:
- Składnik Redis programu .NET Aspire StackExchange: ten składnik służy do bezpośredniej interakcji z serwerem Redis. Można na przykład użyć go do zapisywania i pobierania wartości w bazie danych Redis lub subskrybowania komunikatów wysyłanych do kanału. Ponieważ ten składnik nie koncentruje się na buforowaniu, nie rozważymy go jeszcze bardziej w tym module.
- Składnik buforowania wyjściowego redis .NET Aspire StackExchange Redis: użyj tego składnika do buforowania pełnych odpowiedzi HTTP.
- .NET Aspire StackExchange Składnik rozproszonego buforowania Redis: użyj tego składnika buforowania do przechowywania i pobierania danych z rozproszonej pamięci podręcznej. Buforowanie rozproszone opisuje architekturę, w której wiele mikrousług lub innych usług klienckich współużytkuje jedną pamięć podręczną.