Delen via


Quickstart: Azure Cache voor Redis gebruiken met een .NET-app

In deze quickstart neemt u Azure Cache voor Redis op in een .NET-app voor toegang tot een beveiligde, toegewezen cache die toegankelijk is vanuit elke toepassing in Azure. U gebruikt met name de client StackExchange.Redis met C#-code in een .NET-console-app.

Ga naar de code op GitHub

In dit artikel wordt beschreven hoe u de code voor een voorbeeld-app wijzigt om een werkende app te maken die verbinding maakt met Azure Cache voor Redis.

Als u rechtstreeks naar de code wilt gaan, raadpleegt u het voorbeeld van de .NET-quickstart op GitHub.

Vereisten

Een cache maken

  1. Meld u aan bij Azure Portal om een cache te maken. Selecteer een resource maken in het portalmenu.

    Sceenshot met de optie Een resource maken gemarkeerd in het linkernavigatiedeelvenster in Azure Portal.

  2. Voer in het deelvenster Aan de slag Azure Cache voor Redis in de zoekbalk in. Zoek Azure Cache voor Redis in de zoekresultaten en selecteer Vervolgens Maken.

    Schermopname van Azure Marketplace met Azure Cache voor Redis in het zoekvak en de knop Maken is gemarkeerd.

  3. Configureer in het deelvenster Nieuwe Redis Cache op het tabblad Basis de volgende instellingen voor uw cache:

    Instelling Actie Beschrijving
    Abonnement Selecteer uw Azure-abonnement. Het abonnement dat moet worden gebruikt om het nieuwe exemplaar van Azure Cache voor Redis te maken.
    Resourcegroep Selecteer een resourcegroep of selecteer Nieuwe maken en voer een nieuwe resourcegroepnaam in. Een naam voor de resourcegroep waarin u uw cache en andere resources wilt maken. Door al uw app-resources in één resourcegroep te plaatsen, kunt u ze eenvoudig beheren of verwijderen.
    DNS-naam Voer een unieke naam in. De cachenaam moet een tekenreeks van 1 tot 63 tekens zijn die alleen cijfers, letters en afbreekstreepjes bevat. De naam moet beginnen en eindigen met een getal of letter en mag geen opeenvolgende afbreekstreepjes bevatten. De hostnaam van uw cache-exemplaar is\<DNS name>.redis.cache.windows.net.
    Location Selecteer een locatie. Een Azure-regio in de buurt van andere services die gebruikmaken van uw cache.
    Cache-SKU Selecteer een SKU. De SKU bepaalt de grootte, prestaties en functieparameters die beschikbaar zijn voor de cache. Zie Azure Cache voor Redis overzicht voor meer informatie.
    Cachegrootte Selecteer een cachegrootte. Zie Azure Cache voor Redis overzicht voor meer informatie.
  4. Selecteer het tabblad Netwerken of selecteer Volgende: Netwerken.

  5. Selecteer op het tabblad Netwerken een connectiviteitsmethode die u voor de cache wilt gebruiken.

  6. Selecteer het tabblad Geavanceerd of selecteer Volgende: Geavanceerd.

  7. Controleer of selecteer in het deelvenster Geavanceerd een verificatiemethode op basis van de volgende informatie:

    Schermopname van het deelvenster Geavanceerd en de beschikbare opties die u kunt selecteren.

    • Microsoft Entra Authentication is standaard ingeschakeld voor een nieuwe Basic-, Standard- of Premium-cache en toegangssleutelsverificatie is uitgeschakeld.
    • Voor Basic- of Standard-caches kunt u de selectie voor een niet-TLS-poort kiezen.
    • Voor Standard- en Premium-caches kunt u ervoor kiezen om beschikbaarheidszones in te schakelen. U kunt beschikbaarheidszones niet uitschakelen nadat de cache is gemaakt.
    • Voor een Premium-cache configureert u de instellingen voor niet-TLS-poort, clustering, beheerde identiteit en gegevenspersistentie.

    Belangrijk

    Voor optimale beveiliging wordt u aangeraden Microsoft Entra ID met beheerde identiteiten te gebruiken om aanvragen tegen uw cache te autoriseren, indien mogelijk. Autorisatie met behulp van Microsoft Entra ID en beheerde identiteiten biedt superieure beveiliging en gebruiksgemak ten opzichte van autorisatie van gedeelde toegangssleutels. Zie Microsoft Entra ID gebruiken voor cacheverificatie voor meer informatie over het gebruik van beheerde identiteiten met uw cache.

  8. (Optioneel) Selecteer het tabblad Tags of selecteer Volgende: Tags.

  9. (Optioneel) Voer op het tabblad Tags een tagnaam en -waarde in als u de cacheresource wilt categoriseren.

  10. Selecteer de knop Controleren en maken.

    Op het tabblad Controleren en maken valideert Azure uw configuratie automatisch.

  11. Nadat het groene bericht Validatie is geslaagd , selecteert u Maken.

Een nieuwe cache-implementatie vindt meer dan enkele minuten plaats. U kunt de voortgang van de implementatie controleren in het deelvenster Azure Cache voor Redis Overzicht. Wanneer de status Wordt uitgevoerd, is de cache gereed voor gebruik.

De hostnaam, poorten en toegangssleutel ophalen

Om verbinding te maken met uw Azure Cache voor Redis-server, heeft de cacheclient de hostnaam, poorten en een toegangssleutel van de cache nodig. Sommige clients kunnen naar deze items verwijzen door iets andere namen te gebruiken. U kunt de hostnaam, poorten en sleutels ophalen in Azure Portal.

  • Ga als volgende te werk om een toegangssleutel voor uw cache op te halen:

    1. Ga in Azure Portal naar uw cache.
    2. Selecteer Verificatie in het servicemenu onder Instellingen.
    3. Selecteer in het deelvenster Verificatie het tabblad Toegangssleutels .
    4. Als u de waarde voor een toegangssleutel wilt kopiëren, selecteert u het pictogram Kopiëren in het sleutelveld.

    Schermopname van het zoeken en kopiëren van een toegangssleutel voor een exemplaar van Azure Cache voor Redis.

  • Ga als volgende te werk om de hostnaam en poorten voor uw cache op te halen:

    1. Ga in Azure Portal naar uw cache.
    2. Selecteer Overzicht in het servicemenu.
    3. Selecteer onder Essentials voor Hostnaam het pictogram Kopiëren om de waarde van de hostnaam te kopiëren. De waarde van de hostnaam heeft het formulier <DNS name>.redis.cache.windows.net.
    4. Selecteer voor Poorten het pictogram Kopiëren om de poortwaarden te kopiëren.

    Schermopname van het zoeken en kopiëren van de hostnaam en poorten voor een exemplaar van Azure Cache voor Redis.

  1. Maak een bestand op uw computer met de naam CacheSecrets.config. Plaats deze in de map *C:\AppSecrets*.

  2. Bewerk het bestand CacheSecrets.config en voeg de volgende inhoud toe:

    <appSettings>
        <add key="CacheConnection" value="<host-name>,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/>
    </appSettings>
    
    • Vervang <host-name> door de hostnaam van uw cache.

    • Vervang <access-key> door de primaire sleutel voor uw cache.

  3. Sla het bestand op.

De cacheclient configureren

In deze sectie bereidt u de consoletoepassing voor op het gebruik van de StackExchange.Redis-client voor .NET.

  1. Selecteer in Visual Studio de optie Extra>NuGet-pakketbeheer>Console voor pakketbeheer. Voer de volgende opdracht uit in het venster Pakketbeheer Console:

    Install-Package StackExchange.Redis
    
  2. Wanneer de installatie is voltooid, is de StackExchange.Redis-cacheclient beschikbaar voor gebruik met uw project.

Verbinding maken met de geheimencache

Open uw App.config-bestand in Visual Studio om te controleren of het een appSettings file kenmerk bevat dat verwijst naar het CacheSecrets.config-bestand:

<?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>

Sla nooit referenties op in uw broncode. Om dit voorbeeld eenvoudig te houden, gebruiken we een configuratiebestand voor externe geheimen. Een betere benadering is om Azure Key Vault met certificaten te gebruiken.

Verbinding maken met de cache met behulp van RedisConnection

De verbinding met uw cache wordt beheerd door de RedisConnection klasse. Maak eerst de verbinding in deze instructie in Program.cs:

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


De waarde van de cacheconnection-app-instelling wordt gebruikt om te verwijzen naar de cache verbindingsreeks vanuit Azure Portal als de wachtwoordparameter.

In RedisConnection.cs wordt de Naamruimte StackExchange.Redis weergegeven als een using instructie waarvoor de RedisConnection klasse vereist is:

using StackExchange.Redis;

De RedisConnection klassecode zorgt ervoor dat er altijd een goede verbinding met de cache is. De verbinding wordt beheerd door het ConnectionMultiplexer exemplaar van StackExchange.Redis. De RedisConnection klasse maakt de verbinding opnieuw wanneer een verbinding is verbroken en kan niet automatisch opnieuw verbinding maken.

Zie StackExchange.Redis en de code in de GitHub-opslagplaats StackExchange.Redis voor meer informatie.

Cacheopdrachten uitvoeren

In Program.cs ziet u de volgende code voor de RunRedisCommandsAsync methode in de Program klasse voor de consoletoepassing:

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}");
    }


Cache-items kunnen worden opgeslagen en opgehaald met behulp van de methoden StringSetAsync en StringGetAsync.

In het voorbeeld ziet u dat de Message sleutel is ingesteld op waarde. De app heeft die waarde in de cache bijgewerkt. De app heeft ook de PING en opdracht uitgevoerd.

Werken met .NET-objecten in de cache

De Redis-server slaat de meeste gegevens op als tekenreeksen, maar deze tekenreeksen kunnen veel typen gegevens bevatten, waaronder geserialiseerde binaire gegevens, die kunnen worden gebruikt bij het opslaan van .NET-objecten in de cache.

Azure Cache voor Redis zowel .NET-objecten als primitieve gegevenstypen in de cache kunnen opslaan, maar voordat een .NET-object in de cache kan worden opgeslagen, moet het worden geserialiseerd.

Deze serialisatie van .NET-objecten is de verantwoordelijkheid van de ontwikkelaar van de toepassing. U hebt enige flexibiliteit in uw keuze van de serializer.

Een eenvoudige manier om objecten te serialiseren is het gebruik van de JsonConvert serialisatiemethoden in System.text.Json.

Voeg de System.text.Json-naamruimte toe in Visual Studio:

  1. Selecteer Tools>NuGet Pakketbeheer> Pakketbeheer Console*.

  2. Voer vervolgens de volgende opdracht uit in het venster Pakketbeheer Console:

    Install-Package system.text.json
    

De volgende Employee klasse is gedefinieerd in Program.cs , zodat het voorbeeld kan laten zien hoe u een geserialiseerd object kunt ophalen en instellen:

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;
    }
}

De voorbeeldtoepassing uitvoeren

Als u de console-app wilt bouwen en uitvoeren om serialisatie van .NET-objecten te testen, selecteert u Ctrl+F5.

Schermopname van de voltooide console-app.

Resources opschonen

Als u de resources wilt blijven gebruiken die u in dit artikel hebt gemaakt, moet u de resourcegroep behouden.

Als u de resources niet meer wilt gebruiken, kunt u de Azure-resourcegroep verwijderen die u hebt gemaakt, als u klaar bent met het gebruik van de resources.

Waarschuwing

Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. Wanneer u een resourcegroep verwijdert, worden alle resources in de resourcegroep definitief verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources in een bestaande resourcegroep hebt gemaakt die resources bevat die u wilt behouden, kunt u elke resource afzonderlijk verwijderen in plaats van de resourcegroep te verwijderen.

Een resourcegroep verwijderen

  1. Meld u aan bij Azure Portal en selecteer vervolgens Resourcegroepen.

  2. Selecteer de resourcegroep die u wilt verwijderen.

    Als er veel resourcegroepen zijn, voert u in Filter voor een veld de naam in van de resourcegroep die u hebt gemaakt om dit artikel te voltooien. Selecteer de resourcegroep in de lijst met zoekresultaten.

    Schermopname van een lijst met resourcegroepen waaruit u kunt kiezen om te verwijderen.

  3. Selecteer Resourcegroep verwijderen.

  4. Voer in het deelvenster Een resourcegroep verwijderen de naam van de resourcegroep in die u wilt bevestigen en selecteer Vervolgens Verwijderen.

    Schermopname van een vak waarin u de resourcenaam moet invoeren om het verwijderen te bevestigen.

Binnen enkele ogenblikpen worden de resourcegroep en alle bijbehorende resources verwijderd.