Szybki start: używanie usługi Azure Cache for Redis z aplikacją platformy .NET
W tym przewodniku Szybki start uwzględnisz usługę Azure Cache for Redis w aplikacji platformy .NET, aby uzyskać dostęp do bezpiecznej dedykowanej pamięci podręcznej dostępnej z dowolnej aplikacji na platformie Azure. W szczególności używasz klienta StackExchange.Redis z kodem języka C# w aplikacji konsolowej platformy .NET.
Przejdź do kodu w usłudze GitHub
W tym artykule opisano sposób modyfikowania kodu przykładowej aplikacji w celu utworzenia działającej aplikacji łączącej się z usługą Azure Cache for Redis.
Jeśli chcesz przejść bezpośrednio do kodu, zobacz przykład szybki start platformy .NET w witrynie GitHub.
Wymagania wstępne
- Subskrypcja platformy Azure. Utwórz bezpłatnie
- Visual Studio 2019
- Program .NET Framework 4 lub nowszy zgodnie z wymaganiami klienta StackExchange.Redis
Tworzenie pamięci podręcznej
Aby utworzyć pamięć podręczną, zaloguj się do witryny Azure Portal. W menu portalu wybierz pozycję Utwórz zasób.
W okienku Wprowadzenie wprowadź ciąg Azure Cache for Redis na pasku wyszukiwania. W wynikach wyszukiwania znajdź usługę Azure Cache for Redis, a następnie wybierz pozycję Utwórz.
W okienku Nowa pamięć podręczna Redis Cache na karcie Podstawy skonfiguruj następujące ustawienia dla pamięci podręcznej:
Ustawienie Akcja opis Subskrypcja Wybierz subskrypcję platformy Azure. Subskrypcja do użycia w celu utworzenia nowego wystąpienia usługi Azure Cache for Redis. Grupa zasobów: Wybierz grupę zasobów lub wybierz pozycję Utwórz nową i wprowadź nową nazwę grupy zasobów. Nazwa grupy zasobów, w której ma zostać utworzona pamięć podręczna i inne zasoby. Umieszczając wszystkie zasoby aplikacji w jednej grupie zasobów, można je łatwo zarządzać lub usuwać razem. Nazwa DNS Wprowadź unikatową nazwę. Nazwa pamięci podręcznej musi być ciągiem od 1 do 63 znaków, który zawiera tylko cyfry, litery i łączniki. Nazwa musi zaczynać się i kończyć cyfrą lub literą i nie może zawierać kolejnych łączników. Nazwa hosta wystąpienia pamięci podręcznej to \<DNS name>.redis.cache.windows.net
.Lokalizacja Wybierz lokalizację. Region platformy Azure, który znajduje się w pobliżu innych usług korzystających z pamięci podręcznej. Jednostka SKU pamięci podręcznej Wybierz jednostkę SKU. Jednostka SKU określa rozmiar, wydajność i parametry funkcji, które są dostępne dla pamięci podręcznej. Aby uzyskać więcej informacji, zobacz Omówienie usługi Azure Cache for Redis. Rozmiar pamięci podręcznej Wybierz rozmiar pamięci podręcznej. Aby uzyskać więcej informacji, zobacz Omówienie usługi Azure Cache for Redis. Wybierz kartę Sieć lub wybierz pozycję Dalej: Sieć.
Na karcie Sieć wybierz metodę łączności do użycia dla pamięci podręcznej.
Wybierz kartę Zaawansowane lub wybierz pozycję Dalej: Zaawansowane.
W okienku Zaawansowane sprawdź lub wybierz metodę uwierzytelniania na podstawie następujących informacji:
- Domyślnie w przypadku nowej pamięci podręcznej w warstwie Podstawowa, Standardowa lub Premium jest włączone uwierzytelnianie Entra firmy Microsoft, a uwierzytelnianie kluczy dostępu jest wyłączone.
- W przypadku pamięci podręcznych w warstwie Podstawowa lub Standardowa można wybrać opcję portu innego niż TLS.
- W przypadku pamięci podręcznych w warstwie Standardowa i Premium można włączyć strefy dostępności. Po utworzeniu pamięci podręcznej nie można wyłączyć stref dostępności.
- W przypadku pamięci podręcznej Premium skonfiguruj ustawienia portów innych niż TLS, klastrowanie, tożsamość zarządzana i trwałość danych.
Ważne
W celu uzyskania optymalnego bezpieczeństwa zalecamy użycie identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi w celu autoryzowania żądań względem pamięci podręcznej, jeśli to możliwe. Autoryzacja przy użyciu identyfikatora Entra firmy Microsoft i tożsamości zarządzanych zapewnia doskonałe zabezpieczenia i łatwość korzystania z autoryzacji klucza dostępu współdzielonego. Aby uzyskać więcej informacji na temat używania tożsamości zarządzanych z pamięcią podręczną, zobacz Use Microsoft Entra ID for cache authentication (Używanie identyfikatora Entra firmy Microsoft do uwierzytelniania w pamięci podręcznej).
(Opcjonalnie) Wybierz kartę Tagi lub wybierz pozycję Dalej: Tagi.
(Opcjonalnie) Na karcie Tagi wprowadź nazwę i wartość tagu, jeśli chcesz podzielić zasób pamięci podręcznej.
Wybierz przycisk Przejrzyj i utwórz.
Na karcie Przeglądanie i tworzenie platforma Azure automatycznie weryfikuje konfigurację.
Po pojawieniu się zielonego komunikatu Weryfikacja przekazana wybierz pozycję Utwórz.
Nowe wdrożenie pamięci podręcznej odbywa się w ciągu kilku minut. Postęp wdrażania można monitorować w okienku Przegląd usługi Azure Cache for Redis. Gdy zostanie wyświetlony stan Uruchomiono, pamięć podręczna jest gotowa do użycia.
Pobieranie nazwy hosta, portów i klucza dostępu
Aby nawiązać połączenie z serwerem usługi Azure Cache for Redis, klient pamięci podręcznej potrzebuje nazwy hosta, portów i klucza dostępu pamięci podręcznej. Niektórzy klienci mogą odwoływać się do tych elementów przy użyciu nieco różnych nazw. Nazwę hosta, porty i klucze można uzyskać w witrynie Azure Portal.
Aby uzyskać klucz dostępu dla pamięci podręcznej:
- W witrynie Azure Portal przejdź do pamięci podręcznej.
- W menu usługi w obszarze Ustawienia wybierz pozycję Uwierzytelnianie.
- W okienku Uwierzytelnianie wybierz kartę Klucze dostępu.
- Aby skopiować wartość klucza dostępu, wybierz ikonę Kopiuj w polu klucza.
Aby uzyskać nazwę hosta i porty pamięci podręcznej:
- W witrynie Azure Portal przejdź do pamięci podręcznej.
- W menu usługi wybierz pozycję Przegląd.
- W obszarze Podstawy w polu Nazwa hosta wybierz ikonę Kopiuj , aby skopiować wartość nazwy hosta. Wartość nazwy hosta ma postać
<DNS name>.redis.cache.windows.net
. - W obszarze Porty wybierz ikonę Kopiuj , aby skopiować wartości portów.
Utwórz plik na komputerze o nazwie CacheSecrets.config. Umieść go w folderze *C:\AppSecrets*.
Edytuj plik CacheSecrets.config i dodaj następującą zawartość:
<appSettings> <add key="CacheConnection" value="<host-name>,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/> </appSettings>
Zastąp element
<host-name>
nazwą hosta pamięci podręcznej.Zastąp element
<access-key>
kluczem podstawowym pamięci podręcznej.
Zapisz plik.
Konfigurowanie klienta pamięci podręcznej
W tej sekcji przygotujesz aplikację konsolową do korzystania z klienta StackExchange.Redis dla platformy .NET.
W Visual Studio wybierz Narzędzia>NuGet Menedżer pakietów>Konsola menedżera pakietów. Uruchom następujące polecenie w oknie konsoli Menedżer pakietów:
Install-Package StackExchange.Redis
Po zakończeniu instalacji klient pamięci podręcznej StackExchange.Redis jest dostępny do użycia z projektem.
Nawiązywanie połączenia z pamięcią podręczną Wpisy tajne
W programie Visual Studio otwórz plik App.config, aby sprawdzić, czy zawiera appSettings
file
atrybut odwołujący się do pliku CacheSecrets.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<appSettings file="C:\AppSecrets\CacheSecrets.config"></appSettings>
</configuration>
Nigdy nie przechowuj poświadczeń w kodzie źródłowym. Aby zachować prostotę tego przykładu, użyjemy zewnętrznego pliku konfiguracji wpisów tajnych. Lepszym rozwiązaniem byłoby użycie usługi Azure Key Vault z certyfikatami.
Nawiązywanie połączenia z pamięcią podręczną przy użyciu programu RedisConnection
Połączenie z pamięcią podręczną jest zarządzane przez klasę RedisConnection
. Najpierw utwórz połączenie w tej instrukcji w Program.cs:
_redisConnection = await RedisConnection.InitializeAsync(connectionString: ConfigurationManager.AppSettings["CacheConnection"].ToString());
Wartość ustawienia aplikacji CacheConnection służy do odwołowania się do parametry połączenia pamięci podręcznej z witryny Azure Portal jako parametru hasła.
W RedisConnection.cs przestrzeń nazw StackExchange.Redis jest wyświetlana jako using
instrukcja, że RedisConnection
klasa wymaga:
using StackExchange.Redis;
Kod RedisConnection
klasy gwarantuje, że zawsze istnieje dobre połączenie z pamięcią podręczną. Połączenie jest zarządzane przez ConnectionMultiplexer
wystąpienie z witryny StackExchange.Redis. Klasa RedisConnection
ponownie tworzy połączenie, gdy połączenie zostanie utracone i nie będzie można nawiązać połączenia automatycznie.
Aby uzyskać więcej informacji, zobacz StackExchange.Redis i kod w repozytorium StackExchange.Redis GitHub.
Wykonywanie poleceń pamięci podręcznej
W Program.cs można zobaczyć następujący kod metody RunRedisCommandsAsync
w Program
klasie dla aplikacji konsolowej:
private static async Task RunRedisCommandsAsync(string prefix)
{
// Simple PING command
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: PING");
RedisResult pingResult = await _redisConnection.BasicRetryAsync(async (db) => await db.ExecuteAsync("PING"));
Console.WriteLine($"{prefix}: Cache response: {pingResult}");
// Simple get and put of integral data types into the cache
string key = "Message";
string value = "Hello! The cache is working from a .NET console app!";
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
RedisValue getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: SET {key} \"{value}\" via StringSetAsync()");
bool stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync(key, value));
Console.WriteLine($"{prefix}: Cache response: {stringSetResult}");
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");
// Store serialized object to cache
Employee e007 = new Employee("007", "Davide Columbo", 100);
stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync("e007", JsonSerializer.Serialize(e007)));
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache response from storing serialized Employee object: {stringSetResult}");
// Retrieve serialized object from cache
getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync("e007"));
Employee e007FromCache = JsonSerializer.Deserialize<Employee>(getMessageResult);
Console.WriteLine($"{prefix}: Deserialized Employee .NET object:{Environment.NewLine}");
Console.WriteLine($"{prefix}: Employee.Name : {e007FromCache.Name}");
Console.WriteLine($"{prefix}: Employee.Id : {e007FromCache.Id}");
Console.WriteLine($"{prefix}: Employee.Age : {e007FromCache.Age}{Environment.NewLine}");
}
Elementy pamięci podręcznej można zapisywać i pobierać za pomocą metod StringSetAsync
i StringGetAsync
.
W tym przykładzie widać Message
, że klucz jest ustawiony na wartość. Aplikacja zaktualizowała tę wartość w pamięci podręcznej. Aplikacja wykonała PING
również polecenie i .
Praca z obiektami platformy .NET w pamięci podręcznej
Serwer Redis przechowuje większość danych jako ciągi, ale te ciągi mogą zawierać wiele typów danych, w tym serializowane dane binarne, które mogą być używane podczas przechowywania obiektów platformy .NET w pamięci podręcznej.
Usługa Azure Cache for Redis może buforować zarówno obiekty platformy .NET, jak i typy danych pierwotnych, ale zanim będzie można buforować obiekt platformy .NET, musi zostać zserializowany.
Ta serializacja obiektów .NET jest obowiązkiem dewelopera aplikacji. Masz pewną elastyczność w wyborze serializatora.
Prostym sposobem serializacji obiektów jest użycie JsonConvert
metod serializacji w pliku System.text.Json.
Dodaj przestrzeń nazw System.text.Json w programie Visual Studio:
Wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola*.
Następnie uruchom następujące polecenie w oknie konsoli Menedżer pakietów:
Install-Package system.text.json
Następująca Employee
klasa została zdefiniowana w Program.cs , aby przykład mógł pokazać, jak pobrać i ustawić serializowany obiekt:
class Employee
{
public string Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public Employee(string employeeId, string name, int age)
{
Id = employeeId;
Name = name;
Age = age;
}
}
Uruchamianie aplikacji przykładowej
Aby skompilować i uruchomić aplikację konsolową w celu przetestowania serializacji obiektów platformy .NET, wybierz Ctrl+F5.
Czyszczenie zasobów
Jeśli chcesz nadal korzystać z zasobów utworzonych w tym artykule, zachowaj grupę zasobów.
W przeciwnym razie, aby uniknąć opłat związanych z zasobami, jeśli skończysz korzystać z zasobów, możesz usunąć utworzoną grupę zasobów platformy Azure.
Ostrzeżenie
Usunięcie grupy zasobów jest nieodwracalne. Po usunięciu grupy zasobów wszystkie zasoby w grupie zasobów zostaną trwale usunięte. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub grupy zasobów. Jeśli zasoby zostały utworzone w istniejącej grupie zasobów zawierającej zasoby, które chcesz zachować, możesz usunąć każdy zasób indywidualnie zamiast usuwać grupę zasobów.
Usuwanie grupy zasobów
Zaloguj się do witryny Azure Portal, a następnie wybierz pozycję Grupy zasobów.
Wybierz grupę zasobów do usunięcia.
Jeśli istnieje wiele grup zasobów, w polu Filtruj dla dowolnego pola wprowadź nazwę utworzonej grupy zasobów, aby ukończyć ten artykuł. Na liście wyników wyszukiwania wybierz grupę zasobów.
Wybierz pozycję Usuń grupę zasobów.
W okienku Usuń grupę zasobów wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.
W ciągu kilku minut grupa zasobów i wszystkie jej zasoby zostaną usunięte.