Quickstart: Azure Cache voor Redis gebruiken in .NET Framework
In deze quickstart neemt u Azure Cache voor Redis op in een .NET Framework-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-console-app.
Ga naar de code op GitHub
Kloon de opslagplaats van (https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet op GitHub.
Vereisten
- Azure-abonnement: u kunt een gratis abonnement nemen
- Visual Studio 2019
- .NET Framework 4 of hoger is vereist voor de client StackExchange.Redis.
Een cache maken
Als u een cache wilt maken, meldt u zich aan bij de Azure-portal en selecteert u Een resource maken.
Typ op de pagina Aan de slag Azure Cache voor Redis in het zoekvak. Ten slotte selecteert u Maken.
Configureer op de pagina Nieuwe Redis Cache de instellingen voor uw 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. Cache-SKU Vervolgkeuzelijst en selecteer een SKU. De SKU bepaalt de grootte, prestaties en onderdelenparameters die beschikbaar zijn voor de cache. Zie het Azure Cache voor Redis-overzicht voor meer informatie. Cachegrootte Vervolgkeuzelijst en selecteer een grootte van uw cache Zie het Azure Cache voor Redis-overzicht voor meer informatie. Selecteer het tabblad Netwerken of selecteer de knop Netwerken onderaan de pagina.
Selecteer uw verbindingsmethode op het tabblad Netwerk.
Selecteer het tabblad Volgende: Geavanceerd of selecteer de knop Volgende: Geavanceerd onder aan de pagina om het tabblad Geavanceerd weer te geven.
- 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 raadt Microsoft Aan om Microsoft Entra ID met beheerde identiteiten te gebruiken om aanvragen tegen uw cache waar mogelijk te autoriseren. Autorisatie met Microsoft Entra ID en beheerde identiteiten biedt superieure beveiliging en gebruiksgemak ten opzichte van autorisatie van gedeelde sleutels. Zie Microsoft Entra ID gebruiken voor cacheverificatie voor meer informatie over het gebruik van beheerde identiteiten met uw caches.
Selecteer het tabblad Volgende: Tags of selecteer de knop Volgende: Tags onderaan de pagina.
Voer desgewenst in het tabblad Tags de naam en waarde in om de resource te categoriseren.
Selecteer Controleren + maken. Bij beoordelen en maken valideert Azure uw configuratie.
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 Status Wordt 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 Verificatie in het menu Resource. Selecteer vervolgens het tabblad Toegangstoetsen .
Als u de hostnaam en poorten voor uw cache wilt ophalen, selecteert u Overzicht in het menu Resource. De hostnaam is van de dns-naam> van het formulier.redis.cache.windows.net<.
Maak een bestand op uw computer met de naam CacheSecrets.config en plaats het bestand C:\AppSecrets\CacheSecrets.config.
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.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.
In Visual Studio selecteert u Tools>NuGet Pakketbeheer> Pakketbeheer Console en voert u de volgende opdracht uit vanuit het Pakketbeheer Console-venster.
Install-Package StackExchange.Redis
Zodra de installatie is voltooid, kan de StackExchange.Redis-cacheclient met uw project worden gebruikt.
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 referenties nooit op in 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 RedisConnection
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: ConfigurationManager.AppSettings["CacheConnection"].ToString());
De waarde van de appSetting CacheConnection wordt gebruikt om vanuit Azure Portal te verwijzen naar de verbindingsreeks voor de cache als de wachtwoordparameter.
In RedisConnection.cs
ziet u de StackExchange.Redis
naamruimte met het using
trefwoord. 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.Redis
te 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.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 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.
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 aan Visual Studio:
Selecteer Tools>NuGet Pakketbeheer> Pakketbeheer Console*.
Voer vervolgens de volgende opdracht uit vanuit het venster Pakketbeheer Console.
Install-Package system.text.json
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 employeeId, string name, int age)
{
Id = employeeId;
Name = name;
Age = age;
}
}
De voorbeeldtoepassing uitvoeren
Druk op Ctrl + F5 om de console-app te bouwen en uit te voeren en zo de serialisatie van .NET-objecten te testen.
Resources opschonen
Als u doorgaat met het gebruik van deze quickstart, kunt u de gemaakte resources behouden en opnieuw gebruiken.
Als u niet verder wilt met de voorbeeldtoepassing uit de snelstart, kunt u de Azure-resources verwijderen die in deze snelstart zijn gemaakt 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.
Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
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.
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.