Quickstart: Azure Cache voor Redis gebruiken in .NET Core

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

Ga naar de code op GitHub

Kloon de opslagplaats https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet-core op GitHub.

Vereisten

Een cache maken

  1. Als u een cache wilt maken, meldt u zich aan bij de Azure-portal en selecteert u Een resource maken.

    Create a resource is highlighted in the left navigation pane.

  2. Selecteer op de pagina Nieuw de optie Databases en selecteer vervolgens Azure Cache voor Redis.

    On New, Databases is highlighted, and Azure Cache for Redis is highlighted.

  3. Configureer op de pagina Nieuwe Redis-cache de instellingen voor de nieuwe cache.

    Instelling Een waarde kiezen Beschrijving
    Abonnement Open de vervolgkeuzelijst en selecteer uw abonnement. Het abonnement waarmee dit nieuwe Azure Cache voor Redis-exemplaar wordt gemaakt.
    Resourcegroep Open de vervolgkeuzelijst en selecteer een resourcegroep of kies Nieuwe maken en geef een naam voor de nieuwe resourcegroep op. Naam voor de resourcegroep waarin de cache en andere resources moeten worden gemaakt. 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 tussen 1 en 63 tekens zijn die alleen cijfers, letters of afbreekstreepjes bevatten. De naam moet beginnen en eindigen met een cijfer of letter en mag geen opeenvolgende afbreekstreepjes bevatten. De hostnaam van uw cache-exemplaar is <DNS-naam.redis.cache.windows.net>.
    Location Open de vervolgkeuzelijst en selecteer een locatie. Selecteer een regio in de buurt van andere services die gebruikmaken van uw cache.
    Cachetype Vervolgkeuzelijst en selecteer een laag. De grootte, prestaties en functies die beschikbaar zijn voor de cache, zijn afhankelijk van de gekozen laag. Zie het Azure Cache voor Redis-overzicht voor meer informatie.
  4. Selecteer het tabblad Netwerken of selecteer de knop Netwerken onderaan de pagina.

  5. Selecteer uw verbindingsmethode op het tabblad Netwerk.

  6. Selecteer het tabblad Volgende: Geavanceerd of selecteer de knop Volgende: Geavanceerd onder aan de pagina om het tabblad Geavanceerd weer te geven.

    Screenshot showing the Advanced tab in the working pane and the available option to select.

    • Voor Basic- of Standard-caches schakelt u de selectie voor een niet-TLS-poort in. U kunt ook selecteren of u Microsoft Entra-verificatie wilt inschakelen.
    • Voor een Premium-cache configureert u de instellingen voor niet-TLS-poort, clustering, beheerde identiteit en gegevenspersistentie. U kunt ook selecteren of u Microsoft Entra-verificatie wilt inschakelen.
  7. Selecteer het tabblad Volgende: Tags of selecteer de knop Volgende: Tags onderaan de pagina.

  8. Voer desgewenst in het tabblad Tags de naam en waarde in om de resource te categoriseren.

  9. Selecteer Controleren + maken. Het tabblad Beoordelen + maken wordt weergegeven, waar uw configuratie wordt gevalideerd in Azure.

  10. Selecteer Maken nadat het groene bericht Validatie geslaagd verschijnt.

Het duurt even voordat een cache is gemaakt. U kunt de voortgang bekijken op de overzichtspagina van Azure Cache voor Redis. Als u bij StatusWordt uitgevoerd ziet staan, kunt u de cache gebruiken.

Hostnaam, poorten en toegangssleutels ophalen uit Azure Portal

Om verbinding te maken met uw Azure Cache voor Redis-server, heeft de cacheclient de hostnaam, poorten en een sleutel voor de cache nodig. Sommige clients kunnen enigszins andere namen gebruiken om naar deze items te verwijzen. U kunt de hostnaam, poorten en toegangssleutels ophalen uit Azure Portal.

  • Als u de toegangssleutels wilt ophalen, selecteert u in de linkernavigatie van de cache de optie Toegangssleutels.

    Azure Cache for Redis keys

  • Als u de hostnaam en poorten wilt ophalen, selecteert u in de linkernavigatie van de cache de optie Eigenschappen. De hostnaam is van de dns-naam> van het formulier.redis.cache.windows.net<.

    Azure Cache for Redis properties

Noteer de hostnaam en de primaire toegangssleutel. U gebruikt deze waarden later om het cachegeheim te maken Verbinding maken ion.

Een lokaal geheim toevoegen voor de verbindingsreeks

Voer in het opdrachtvenster de volgende opdracht uit om een nieuw geheim met de naam CacheConnection op te slaan, nadat u de tijdelijke aanduidingen (inclusief vierkante haken) hebt vervangen door uw cachenaam en de primaire toegangssleutel:

dotnet user-secrets set CacheConnection "<cache name>.redis.cache.windows.net,abortConnect=false,ssl=true,allowAdmin=true,password=<primary-access-key>"

Verbinding maken naar de cache met Redis Verbinding maken ion

De verbinding met uw cache wordt beheerd door de RedisConnection klasse. De verbinding wordt eerst gemaakt in deze verklaring van Program.cs:

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

In RedisConnection.csziet u dat de StackExchange.Redis naamruimte is toegevoegd aan de code. Dit is nodig voor de RedisConnection klas.

using StackExchange.Redis;

De RedisConnection code zorgt ervoor dat er altijd een goede verbinding met de cache is door het ConnectionMultiplexer exemplaar vanuit StackExchange.Rediste beheren. 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 een GitHub-opslagplaats voor meer informatie.

Cache-opdrachten uitvoeren

In program.csziet 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 kan zowel .NET-objecten als oudere gegevenstypen opslaan in de cache. Voordat een .NET-object in de cache kan worden opgeslagen, moet het echter worden geserialiseerd.

Deze serialisatie van het .NET-object is de verantwoordelijkheid van de ontwikkelaar van de toepassing. Het geeft de ontwikkelaar flexibiliteit bij de keuze van de serializer.

De volgende Employee klasse is gedefinieerd in Program.cs , zodat het voorbeeld ook 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 id, string name, int age)
        {
            Id = id;
            Name = name;
            Age = age;
        }
    }

De voorbeeldtoepassing uitvoeren

Als u bestanden hebt geopend, slaat u deze op en bouwt u de app met de volgende opdracht:

dotnet build

Voer de app uit met de volgende opdracht om de serialisatie van .NET-objecten te testen:

dotnet run

Console app completed

Resources opschonen

Als u deze quickstart blijft gebruiken, kunt u de gemaakte resources behouden en opnieuw gebruiken.

Als u klaar bent met de quickstart-voorbeeldtoepassing, kunt u de Azure-resources die in deze quickstart zijn gemaakt, verwijderen om kosten te voorkomen.

Belangrijk

Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle bijbehorende resources worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources hebt gemaakt voor het hosten van dit voorbeeld in een bestaande resourcegroep die resources bevat die u wilt behouden, kunt u elke resource afzonderlijk aan de linkerkant verwijderen in plaats van de resourcegroep te verwijderen.

Een resourcegroep verwijderen

  1. Meld u aan bij de Azure-portal en selecteer Resourcegroepen.

  2. Typ de naam van de resourcegroep in het tekstvak Filteren op naam.... In de instructies voor dit artikel is een resourcegroep met de naam TestResources gebruikt. Selecteer ... in de resourcegroep in de lijst met resultaten en vervolgens Resourcegroep verwijderen.

    Delete

  3. U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Typ ter bevestiging de naam van de resourcegroep nogmaals en selecteer Verwijderen.

Na enkele ogenblikken worden de resourcegroep en alle resources in de groep verwijderd.

Volgende stappen