Szybki start: używanie usługi Azure Cache for Redis w środowisku .NET Framework

W tym przewodniku Szybki start uwzględnisz usługę Azure Cache for Redis w aplikacji .NET Framework, aby mieć 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

Sklonuj repozytorium z (https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet w witrynie GitHub.

Wymagania wstępne

Tworzenie pamięci podręcznej

  1. Aby utworzyć pamięć podręczną, zaloguj się do witryny Azure Portal i wybierz pozycję Utwórz zasób.

    W okienku nawigacji po lewej stronie wyróżniono pozycję Utwórz zasób.

  2. Na stronie Nowy wybierz pozycję Bazy danych, a następnie wybierz pozycję Azure Cache for Redis.

    W obszarze Nowe bazy danych jest wyróżniona, a usługa Azure Cache for Redis jest wyróżniona.

  3. Na stronie Nowa pamięć podręczna Redis Cache skonfiguruj ustawienia nowej pamięci podręcznej.

    Ustawienie Wybierz wartość opis
    Subskrypcja Z listy rozwijanej i wybierz subskrypcję. Subskrypcja, w ramach której ma zostać utworzone to nowe wystąpienie usługi Azure Cache for Redis.
    Grupa zasobów: Z listy rozwijanej i 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 z zakresu od 1 do 63 znaków, które zawierają tylko cyfry, litery lub łą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 <nazwa> DNS.redis.cache.windows.net.
    Lokalizacja Z listy rozwijanej i wybierz lokalizację. Wybierz region w pobliżu innych usług korzystających z pamięci podręcznej.
    Typ pamięci podręcznej Z listy rozwijanej wybierz warstwę. Warstwa określa rozmiar, wydajność i funkcje dostępne dla pamięci podręcznej. Aby uzyskać więcej informacji, zobacz Omówienie pamięci podręcznej Azure Cache for Redis.
  4. Wybierz kartę Sieć lub wybierz przycisk Sieć w dolnej części strony.

  5. Na karcie Sieć wybierz metodę łączności.

  6. Wybierz kartę Dalej: Zaawansowane lub wybierz przycisk Dalej: Zaawansowane w dolnej części strony, aby wyświetlić kartę Zaawansowane.

    Zrzut ekranu przedstawiający kartę Zaawansowane w okienku roboczym i dostępną opcję do wybrania.

    • W przypadku pamięci podręcznych w warstwie Podstawowa lub Standardowa przełącz wybór portu innego niż TLS. Możesz również wybrać, jeśli chcesz włączyć uwierzytelnianie firmy Microsoft Entra.
    • W przypadku pamięci podręcznej Premium skonfiguruj ustawienia portów innych niż TLS, klastrowanie, tożsamość zarządzana i trwałość danych. Możesz również wybrać, jeśli chcesz włączyć uwierzytelnianie firmy Microsoft Entra.
  7. Wybierz kartę Dalej: Tagi lub wybierz przycisk Dalej: Tagi w dolnej części strony.

  8. Opcjonalnie na karcie Tagi wprowadź nazwę i wartość, jeśli chcesz skategoryzować zasób.

  9. Wybierz pozycję Przejrzyj i utwórz. Przejdź do karty Przeglądanie i tworzenie, na której platforma Azure weryfikuje konfigurację.

  10. Po pojawieniu się zielonego komunikatu Weryfikacja przekazana wybierz pozycję Utwórz.

Utworzenie pamięci podręcznej zajmuje trochę czasu. Postęp można monitorować na stronie Przegląd usługi Azure Cache for Redis. Gdy stan jest wyświetlany jako Uruchomiono, pamięć podręczna jest gotowa do użycia.

Pobieranie nazwy hosta, portów i kluczy dostępu z witryny Azure Portal

Aby połączyć serwer usługi Azure Cache for Redis, klient pamięci podręcznej potrzebuje nazwy hosta, portów i klucza pamięci podręcznej. Niektórzy klienci mogą odwoływać się do tych elementów przy użyciu nieco innych nazw. Nazwę hosta, porty i klucze można uzyskać w witrynie Azure Portal.

  • Aby uzyskać klucze dostępu, wybierz pozycję Uwierzytelnianie z menu Zasób. Następnie wybierz kartę Klucze dostępu.

    Klucze usługi Azure Cache for Redis

  • Aby uzyskać nazwę hosta i porty pamięci podręcznej, wybierz pozycję Przegląd w menu Zasób. Nazwa hosta ma formę <DNS name.redis.cache.windows.net>.

    Właściwości usługi Azure Cache for Redis

  1. Utwórz plik na komputerze o nazwie CacheSecrets.config i umieść go w folderze C:\AppSecrets\CacheSecrets.config.

  2. 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>
    
  3. Zastąp element <host-name> nazwą hosta pamięci podręcznej.

  4. Zastąp element <access-key> kluczem podstawowym pamięci podręcznej.

  5. Zapisz plik.

Konfigurowanie klienta pamięci podręcznej

W tej sekcji przygotujesz aplikację konsolową do korzystania z klienta StackExchange.Redis dla platformy .NET.

  1. W programie Visual Studio wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola i uruchom następujące polecenie w oknie konsoli Menedżer pakietów.

    Install-Package StackExchange.Redis
    
  2. Po ukończeniu instalacji klient pamięci podręcznej StackExchange.Redis będzie dostępny do użycia z projektem.

Połączenie do pamięci podręcznej Wpisy tajne

W programie Visual Studio otwórz plik App.config, aby sprawdzić, czy zawiera appSettingsfile 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 należy przechowywać 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.

Połączenie do pamięci podręcznej za pomocą usługi Redis Połączenie ion

Połączenie z pamięcią podręczną jest zarządzane przez klasę RedisConnection . Połączenie jest najpierw wykonywane w tej instrukcji z :Program.cs

     _redisConnection = await RedisConnection.InitializeAsync(connectionString: ConfigurationManager.AppSettings["CacheConnection"].ToString());


Wartość ustawienia appSetting CacheConnection jest używana do odwoływania się do parametrów połączenia pamięci podręcznej z witryny Azure Portal jako parametru hasła.

W RedisConnection.cspliku zostanie wyświetlona StackExchange.Redis przestrzeń nazw ze using słowem kluczowym . Jest to wymagane dla RedisConnection klasy .

using StackExchange.Redis;

Kod RedisConnection gwarantuje, że zawsze istnieje dobre połączenie z pamięcią podręczną przez zarządzanie wystąpieniem ConnectionMultiplexer z programu StackExchange.Redis. Klasa RedisConnection ponownie utworzy 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 GitHub.

Wykonywanie poleceń pamięci podręcznej

W program.cspliku zobaczysz 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ć obiekty platformy .NET oraz pierwotne typy danych, ale zanim będzie możliwe buforowanie obiektu platformy .NET, trzeba go serializować.

Odpowiedzialność za serializację obiektu .NET spoczywa na deweloperze aplikacji, który ma możliwość wybrania serializatora.

Jednym z prostych sposobów serializacji obiektów jest użycie JsonConvert metod serializacji w programie System.text.Json.

System.text.Json Dodaj przestrzeń nazw do programu Visual Studio:

  1. Wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola*.

  2. Następnie uruchom następujące polecenie w oknie Menedżer pakietów Konsola.

    Install-Package system.text.json
    

Następująca Employee klasa została zdefiniowana w Program.cs , aby przykład mógł również pokazać, jak uzyskać 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

Naciśnij klawisze Ctrl+F5, aby skompilować i uruchomić aplikację konsolową na potrzeby testowania serializacji obiektów platformy .NET.

Ukończona aplikacja konsolowa

Czyszczenie zasobów

Jeśli nadal korzystasz z tego przewodnika Szybki start, możesz zachować utworzone zasoby i użyć ich ponownie.

W przeciwnym razie po zakończeniu pracy z przykładową aplikacją poradnika Szybki start możesz usunąć zasoby platformy Azure utworzone w tym poradniku Szybki start, aby uniknąć naliczania opłat.

Ważne

Usunięcie grupy zasobów jest nieodwracalne i grupa zasobów oraz wszystkie zawarte w niej zasoby zostaną trwale usunięte. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub grupy zasobów. Jeśli utworzono zasoby do hostowania tego przykładu wewnątrz istniejącej grupy zasobów zawierającej zasoby, które chcesz zachować, możesz usunąć każdy zasób indywidualnie po lewej stronie zamiast usuwać grupę zasobów.

Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.

W polu tekstowym Filtruj według nazwy... wpisz nazwę grupy zasobów. Instrukcje w tym artykule używają grupy zasobów o nazwie TestResources. Na liście wyników w grupie zasobów wybierz pozycję ... a następnie pozycję Usuń grupę zasobów.

Delete

Zostanie wyświetlony monit o potwierdzenie usunięcia grupy zasobów. Wpisz nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.

Po krótkim czasie grupa zasobów i wszystkie zawarte w niej zasoby zostaną usunięte.

Następne kroki