Rychlý start: Použití Azure Cache for Redis v .NET Framework

V tomto rychlém startu zahrnete Azure Cache for Redis do aplikace .NET Framework, která má přístup k zabezpečené vyhrazené mezipaměti, která je přístupná z libovolné aplikace v Azure. Konkrétně používáte klienta StackExchange.Redis s kódem jazyka C# v konzolové aplikaci .NET.

Přeskočte na kód na GitHub

Naklonujte úložiště z (https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet v GitHub.

Požadavky

Vytvoření mezipaměti

  1. Pokud chcete vytvořit mezipaměť, přihlaste se k Azure Portal a vyberte Vytvořit prostředek.

    Create a resource is highlighted in the left navigation pane.

  2. Na stránce Nový vyberte Databáze a pak vyberte Azure Cache for Redis.

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

  3. Na stránce New Redis Cache nakonfigurujte nastavení pro novou mezipaměť.

    Nastavení Volba hodnoty Popis
    Předplatné Rozevírací seznam a výběr předplatného Předplatné, ve kterém se má vytvořit tato nová instance Azure Cache for Redis.
    Skupina prostředků Rozevírací seznam a vyberte skupinu prostředků nebo vyberte Vytvořit novou a zadejte název nové skupiny prostředků. Název skupiny prostředků, ve které se má vytvořit mezipaměť a další prostředky. Když umístíte všechny prostředky aplikace do jedné skupiny prostředků, můžete je snadno spravovat nebo odstraňovat společně.
    Název DNS Zadejte jedinečný název. Název mezipaměti musí být řetězec mezi 1 a 63 znaky, které obsahují jenom čísla, písmena nebo pomlčky. Název musí začínat a končit číslem nebo písmenem a nesmí obsahovat po sobě jdoucí spojovníky. Název hostitele vaší instance mezipaměti bude <název> DNS.redis.cache.windows.net.
    Umístění Rozevírací seznam a výběr umístění Vyberte oblast poblíž jiných služeb, které budou vaši mezipaměť používat.
    Typ mezipaměti Rozevírací seznam a výběr úrovně Úroveň určuje velikost, výkon a funkce, které jsou k dispozici pro mezipaměť. Další informace najdete v tématu Azure Cache for Redis Přehled.
  4. Vyberte kartu Sítě nebo vyberte tlačítko Sítě v dolní části stránky.

  5. Na kartě Sítě vyberte metodu připojení.

  6. Vyberte kartu Další: Upřesnit nebo vyberte tlačítko Další: Upřesnit v dolní části stránky.

  7. Na kartě Upřesnit pro instanci základní nebo standardní mezipaměti vyberte přepínač povolení, pokud chcete povolit port bez protokolu TLS. Můžete také vybrat verzi Redis, kterou chcete použít, a to buď 4, nebo 6.

    Redis version 4 or 6.

  8. Na kartě Upřesnit pro instanci mezipaměti Premium nakonfigurujte nastavení pro port bez protokolu TLS, clustering a trvalost dat. Můžete také vybrat verzi Redis, kterou chcete použít, a to buď 4, nebo 6.

  9. Vyberte kartu Další: Značky nebo vyberte tlačítko Další: Značky v dolní části stránky.

  10. Volitelně na kartě Značky zadejte název a hodnotu, pokud chcete prostředek zařadit do kategorií.

  11. Vyberte Zkontrolovat a vytvořit. Přejdete na kartu Zkontrolovat a vytvořit, kde Azure ověří vaši konfiguraci.

  12. Po zobrazení zelené zprávy ověření vyberte Vytvořit.

Vytvoření mezipaměti trvá nějakou dobu. Průběh můžete sledovat na stránce přehledu Azure Cache for Redis. Když se stav zobrazí jako Spuštěný, je mezipaměť připravená k použití.

Načtení názvu hostitele, portů a přístupových klíčů z Azure Portal

Pro připojení Azure Cache for Redis serveru potřebuje klient mezipaměti název hostitele, porty a klíč pro mezipaměť. Někteří klienti mohou tyto položky označovat trochu odlišnými názvy. Název hostitele, porty a klíče můžete získat z Azure Portal.

  • Přístupové klíče získáte tak, že v levém navigačním panelu mezipaměti vyberete Přístupové klíče.

    Azure Cache for Redis keys

  • Pokud chcete získat název hostitele a porty, v levém navigačním panelu mezipaměti vyberte Vlastnosti. Název hostitele je název dns> formuláře.redis.cache.windows.net<.

    Azure Cache for Redis properties

  1. Vytvořte soubor ve svém počítači s názvem CacheSecrets.config a umístěte ho C:\AppSecrets\CacheSecrets.config.

  2. Upravte soubor TajnéKódyMezipaměti.config a přidejte do něj následující obsah:

    <appSettings>
        <add key="CacheConnection" value="<host-name>,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/>
    </appSettings>
    
  3. <host-name> nahraďte názvem hostitele mezipaměti.

  4. <access-key> nahraďte primárním klíčem mezipaměti.

  5. Soubor uložte.

Konfigurace klienta mezipaměti

V této části připravíte konzolovou aplikaci tak, aby používala klienta StackExchange.Redis pro .NET.

  1. V Visual Studio vyberte Nástroje>NuGet Správce balíčků>Správce balíčků Konzola a v okně konzoly Správce balíčků konzoly spusťte následující příkaz.

    Install-Package StackExchange.Redis
    
  2. Po dokončení instalace budete moct se svým projektem používat klienta mezipaměti StackExchange.Redis.

Připojení do mezipaměti tajných kódů

V Visual Studio otevřete soubor App.config a ověřte, že obsahuje appSettingsfile atribut, který odkazuje na souborCacheSecrets.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>

Neuchovávejte přihlašovací údaje ve zdrojovém kódu. Pro jednoduché použití této ukázky použijeme konfigurační soubor externích tajných kódů. Lepším přístupem může být použití řešení Azure Key Vault s certifikáty.

Připojení do mezipaměti pomocí RedisConnectionu

Připojení k mezipaměti je spravováno RedisConnection třídou. Připojení je nejprve provedeno v tomto příkazu z Program.cs:

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


Hodnota CacheConnection appSetting se používá k odkazování na připojovací řetězec mezipaměti z webu Azure Portal ve formě parametru hesla.

Zobrazí RedisConnection.csse StackExchange.Redis obor názvů s klíčovým slovem using . To je potřeba pro RedisConnection třídu.

using StackExchange.Redis;

Kód RedisConnection zajišťuje, že je vždy v pořádku připojení k mezipaměti tím, že spravuje ConnectionMultiplexer instanci z StackExchange.Redis. RedisConnection Třída znovu vytvoří připojení při ztrátě připojení a nemůže se znovu připojit automaticky.

Další informace najdete v tématu StackExchange.Redis a kód v úložišti GitHub.

Provádění příkazů mezipaměti

V program.csaplikaci konzoly se zobrazí následující kód metody RunRedisCommandsAsync ve Program třídě konzolové aplikace:

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


Položky v mezipaměti lze ukládat a načítat pomocí metod StringSetAsync a StringGetAsync.

V příkladu vidíte, že Message klíč je nastavený na hodnotu. Aplikace tuto hodnotu z mezipaměti aktualizovala. Aplikace také spustila PING příkaz a příkaz.

Práce s objekty .NET v mezipaměti

Server Redis ukládá většinu dat jako řetězce, ale tyto řetězce mohou obsahovat mnoho typů dat, včetně serializovaných binárních dat, které lze použít při ukládání objektů .NET do mezipaměti.

Azure Cache for Redis může ukládat do mezipaměti objekty .NET i primitivní datové typy, ale před uložením objektu .NET do mezipaměti musí být serializován.

Serializaci objektů .NET má na starosti vývojář aplikace, kterému je tak poskytnuta flexibilita při výběru serializátoru.

Jedním z jednoduchých způsobů serializace objektů je použití JsonConvert metod serializace v System.text.Json.

Přidejte obor System.text.Json názvů do Visual Studio:

  1. Vyberte Nástroje>NuGet Správce balíčků>Správce balíčků Konzola*.

  2. Potom v okně konzoly Správce balíčků spusťte následující příkaz.

    Install-Package system.text.json
    

Employee Následující třída byla definována v Program.cs, aby ukázka mohla také ukázat, jak získat a nastavit serializovaný objekt:

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

Spuštění ukázky

Stisknutím kombinace kláves Ctrl+F5 sestavte a spusťte konzolovou aplikaci a otestujte serializaci objektů .NET.

Console app completed

Vyčištění prostředků

Pokud budete pokračovat v používání tohoto rychlého startu, můžete prostředky vytvořené a znovu použít.

V opačném případě, pokud jste už s ukázkovou aplikací v tomto rychlém startu skončili, můžete prostředky Azure vytvořené v tomto rychlém startu odstranit, abyste se vyhnuli poplatkům.

Důležité

Odstranění skupiny prostředků je nevratné a skupina prostředků včetně všech v ní obsažených prostředků bude trvale odstraněna. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste vytvořili prostředky pro hostování této ukázky ve stávající skupině prostředků, která obsahuje prostředky, které chcete zachovat, můžete odstranit každý prostředek jednotlivě nalevo místo odstranění skupiny prostředků.

Přihlaste se k webu Azure Portal a potom vyberte Skupiny prostředků.

Do textového pole Filtrovat podle názvu zadejte název vaší skupiny prostředků. V pokynech v tomto článku se používala skupina prostředků TestResources. Ve skupině prostředků v seznamu výsledků vyberte ... a pak odstraňte skupinu prostředků.

Delete

Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Zadejte název skupiny prostředků, který chcete potvrdit, a vyberte Odstranit.

Po chvíli bude skupina prostředků včetně všech obsažených prostředků odstraněná.

Další kroky