Hızlı Başlangıç: .NET uygulamasıyla Redis için Azure Cache kullanma

Bu hızlı başlangıçta, Azure'daki herhangi bir uygulamadan erişilebilen güvenli ve ayrılmış bir önbelleğe erişmek için Redis için Azure Cache bir .NET uygulamasına dahil edin. StackExchange.Redis istemcisini özellikle bir .NET konsol uygulamasında C# koduyla kullanırsınız.

GitHub'da koda atlayın

Bu makalede, Redis için Azure Cache bağlanan çalışan bir uygulama oluşturmak için örnek uygulamanın kodunun nasıl değiştirileceği açıklanır.

Doğrudan koda gitmek istiyorsanız GitHub'da .NET hızlı başlangıç örneğine bakın.

Önkoşullar

Önbellek oluşturma

  1. Önbellek oluşturmak için Azure portalında oturum açın. Portal menüsünde Kaynak oluştur'u seçin.

    Azure portalının sol gezinti bölmesinde Kaynak oluştur seçeneğinin vurgulandığını gösteren ekran görüntüsü.

  2. Başlarken bölmesinde, arama çubuğuna Redis için Azure Cache girin. Arama sonuçlarında Redis için Azure Cache bulun ve Oluştur'u seçin.

    Arama kutusunda Redis için Azure Cache bulunan ve Oluştur düğmesinin vurgulandığı Azure Market gösteren ekran görüntüsü.

  3. Yeni Redis Önbelleği bölmesindeki Temel Bilgiler sekmesinde önbelleğiniz için aşağıdaki ayarları yapılandırın:

    Ayar Eylem Açıklama
    Abonelik Azure aboneliği seçin. yeni Redis için Azure Cache örneğini oluşturmak için kullanılacak abonelik.
    Kaynak grubu Bir kaynak grubu seçin veya Yeni oluştur'u seçip yeni bir kaynak grubu adı girin. Önbelleğinizin ve diğer kaynakların oluşturulacağı kaynak grubunun adı. Tüm uygulama kaynaklarınızı tek bir kaynak grubuna yerleştirerek bunları kolayca yönetebilir veya silebilirsiniz.
    DNS adı Benzersiz bir ad girin. Önbellek adı yalnızca sayı, harf ve kısa çizgi içeren 1 ile 63 karakter arasında bir dize olmalıdır. Adın bir sayı veya harfle başlayıp bitmesi gerekir ve ardışık kısa çizgi içeremez. Önbellek örneğinizin ana bilgisayar adıdır\<DNS name>.redis.cache.windows.net.
    Konum Bir konum seçin. Önbelleğinizi kullanan diğer hizmetlere yakın bir Azure bölgesi.
    Önbellek SKU'su Bir SKU seçin. SKU, önbellek için kullanılabilen boyut, performans ve özellik parametrelerini belirler. Daha fazla bilgi için bkz. Redis için Azure Cache genel bakış.
    Önbellek boyutu Önbellek boyutu seçin. Daha fazla bilgi için bkz. Redis için Azure Cache genel bakış.
  4. sekmesini seçin veya İleri: Ağ'ı seçin.

  5. sekmesinde önbellek için kullanılacak bir bağlantı yöntemi seçin.

  6. Gelişmiş sekmesini seçin veya İleri: Gelişmiş'i seçin.

  7. Gelişmiş bölmesinde, aşağıdaki bilgilere göre bir kimlik doğrulama yöntemi doğrulayın veya seçin:

    Gelişmiş bölmesini ve seçilebilecek seçenekleri gösteren ekran görüntüsü.

    • Varsayılan olarak, yeni bir Temel, Standart veya Premium önbellek için Microsoft Entra Kimlik Doğrulaması etkinleştirilir ve Erişim Anahtarları Kimlik Doğrulaması devre dışı bırakılır.
    • Temel veya Standart önbellekler için TLS olmayan bir bağlantı noktası için seçim yapabilirsiniz.
    • Standart ve Premium önbellekler için kullanılabilirlik alanlarını etkinleştirmeyi seçebilirsiniz. Önbellek oluşturulduktan sonra kullanılabilirlik alanlarını devre dışı bırakamazsınız.
    • Premium önbellek için TLS olmayan bağlantı noktası, kümeleme, yönetilen kimlik ve veri kalıcılığı ayarlarını yapılandırın.

    Önemli

    En iyi güvenlik için, mümkünse istekleri önbelleğinize karşı yetkilendirmek için yönetilen kimliklerle Microsoft Entra Id kullanmanızı öneririz. Microsoft Entra Id ve yönetilen kimlikleri kullanarak yetkilendirme, paylaşılan erişim anahtarı yetkilendirmesi üzerinden üstün güvenlik ve kullanım kolaylığı sağlar. Önbelleğinizle yönetilen kimlikleri kullanma hakkında daha fazla bilgi için bkz . Önbellek kimlik doğrulaması için Microsoft Entra Id kullanma.

  8. (İsteğe bağlı) Etiketler sekmesini seçin veya İleri: Etiketler'i seçin.

  9. (İsteğe bağlı) Önbellek kaynağınızı kategorilere ayırmak istiyorsanız Etiketler sekmesinde bir etiket adı ve değeri girin.

  10. Gözden geçir + oluştur düğmesini seçin.

    Gözden Geçir ve oluştur sekmesinde Azure yapılandırmanızı otomatik olarak doğrular.

  11. Yeşil Doğrulama başarılı iletisi görüntülendiğinde Oluştur'u seçin.

Birkaç dakika içinde yeni bir önbellek dağıtımı gerçekleşir. Dağıtımın ilerleme durumunu Redis için Azure Cache Genel Bakış bölmesinden izleyebilirsiniz. Durum Çalışıyor olarak görüntülendiğinde önbellek kullanıma hazırdır.

Konak adını, bağlantı noktalarını ve erişim anahtarını alma

Redis için Azure Cache sunucunuza bağlanmak için önbellek istemcisi önbelleğin ana bilgisayar adına, bağlantı noktalarına ve erişim anahtarına ihtiyaç duyar. Bazı istemciler biraz farklı adlar kullanarak bu öğelere başvurabilir. Konak adını, bağlantı noktalarını ve anahtarları Azure portalından alabilirsiniz.

  • Önbelleğiniz için bir erişim anahtarı almak için:

    1. Azure portalında önbelleğinize gidin.
    2. Hizmet menüsünde, Ayarlar'ın altında Kimlik Doğrulaması'nı seçin.
    3. Kimlik Doğrulama bölmesinde Erişim anahtarları sekmesini seçin.
    4. Erişim anahtarının değerini kopyalamak için anahtar alanındaki Kopyala simgesini seçin.

    Redis için Azure Cache örneğinin erişim anahtarını bulmayı ve kopyalamayı gösteren ekran görüntüsü.

  • Önbelleğinizin ana bilgisayar adını ve bağlantı noktalarını almak için:

    1. Azure portalında önbelleğinize gidin.
    2. Hizmet menüsünde Genel Bakış'ı seçin.
    3. Temel Bileşenler'in altında, Ana bilgisayar adı için Kopyala simgesini seçerek konak adı değerini kopyalayın. Konak adı değeri biçimindedir <DNS name>.redis.cache.windows.net.
    4. Bağlantı Noktaları için Kopyala simgesini seçerek bağlantı noktası değerlerini kopyalayın.

    Redis için Azure Cache örneğinin ana bilgisayar adını ve bağlantı noktalarını bulup kopyalamayı gösteren ekran görüntüsü.

  1. Bilgisayarınızda CacheSecrets.config adlı bir dosya oluşturun. *C:\AppSecrets* klasörüne yerleştirin.

  2. CacheSecrets.config dosyasını düzenleyin ve aşağıdaki içerikleri ekleyin:

    <appSettings>
        <add key="CacheConnection" value="<host-name>,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/>
    </appSettings>
    
    • <host-name> adını, önbellek ana bilgisayar adınızla değiştirin.

    • <access-key> adını, önbelleğinizin birincil anahtarıyla değiştirin.

  3. Dosyayı kaydedin.

Önbellek istemcisini yapılandırma

Bu bölümde konsol uygulamasını .NET için StackExchange.Redis istemcisini kullanacak şekilde hazırlamış olacaksınız.

  1. Visual Studio'da, Araçlar>NuGet Paket Yöneticisi>Paket Yönetici Konsolu'nu seçin. Paket Yöneticisi Konsolu penceresinde aşağıdaki komutu çalıştırın:

    Install-Package StackExchange.Redis
    
  2. Yükleme tamamlandığında StackExchange.Redis önbellek istemcisi projenizle birlikte kullanılabilir.

Gizli Diziler önbelleğine bağlanma

Visual Studio'da App.config dosyanızı açarak CacheSecrets.config dosyasına başvuran bir appSettings file öznitelik içerdiğini doğrulayın:

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

Kimlik bilgilerini asla kaynak kodunuzda depolamayın. Bu örneği basit tutmak için bir dış gizli dizi yapılandırma dosyası kullanırız. Daha iyi bir yaklaşım Sertifikalar ile Azure Key Vault kullanmaktır.

RedisConnection kullanarak önbelleğe bağlanma

Önbelleğinize bağlantı sınıfı tarafından RedisConnection yönetilir. İlk olarak, Program.cs'da bu deyimdeki bağlantıyı yapın:

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


CacheConnection uygulama ayarının değeri, Azure portalından önbellek bağlantı dizesi parola parametresi olarak başvurmak için kullanılır.

RedisConnection.cs'de StackExchange.Redis ad alanı, sınıfın RedisConnection gerektirdiği bir using deyim olarak görünür:

using StackExchange.Redis;

RedisConnection Sınıf kodu, önbellekle her zaman iyi durumda bir bağlantı olmasını sağlar. Bağlantı, StackExchange.Redis'ten örnek tarafından ConnectionMultiplexer yönetilir. Sınıfı, RedisConnection bağlantı kesildiğinde ve otomatik olarak yeniden bağlanamayınca bağlantıyı yeniden oluşturur.

Daha fazla bilgi için bkz. StackExchange.Redis ve StackExchange.Redis GitHub deposundaki kod.

Önbellek komutlarını yürütme

Program.cs'daProgram, konsol uygulamasının RunRedisCommandsAsync sınıfında yöntemi için aşağıdaki kodu görebilirsiniz:

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


StringSetAsync ve StringGetAsync yöntemleri kullanılarak önbellek öğeleri depolanabilir ve alınabilir.

Örnekte anahtarın Message değer olarak ayarlandığını görebilirsiniz. Uygulama, önbelleğe alınan bu değeri güncelleştirdi. Uygulama ve komutunu da yürütür PING .

Önbellekte .NET nesneleriyle çalışma

Redis sunucusu çoğu veriyi dize olarak depolar, ancak bu dizeler önbellekte .NET nesnelerini depolarken kullanılabilen serileştirilmiş ikili veriler de dahil olmak üzere birçok veri türü içerebilir.

Redis için Azure Cache hem .NET nesnelerini hem de ilkel veri türlerini önbelleğe alabilir, ancak bir .NET nesnesinin önbelleğe alınabilmesi için önce seri hale getirilmelidir.

Bu .NET nesne serileştirmesi uygulama geliştiricisinin sorumluluğundadır. Seri hale getirici seçiminizde bazı esneklikler vardır.

Nesneleri seri hale getirmenin JsonConvert basit bir yolu, System.text.Json dosyasındaki serileştirme yöntemlerini kullanmaktır.

Visual Studio'da System.text.Json ad alanını ekleyin:

  1. Araçlar>NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu*'nu seçin.

  2. Ardından, Paket Yöneticisi Konsolu penceresinde aşağıdaki komutu çalıştırın:

    Install-Package system.text.json
    

Aşağıdaki Employee sınıf Program.cs'de tanımlanmıştır, böylece örnek serileştirilmiş bir nesnenin nasıl alınıp ayarlandığını gösterebilir:

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

Örneği çalıştırma

.NET nesnelerinin serileştirmesini test etmek üzere konsol uygulamasını derlemek ve çalıştırmak için Ctrl+F5 tuşlarına basın.

Konsol uygulamasının tamamlandığını gösteren ekran görüntüsü.

Kaynakları temizleme

Bu makalede oluşturduğunuz kaynakları kullanmaya devam etmek istiyorsanız kaynak grubunu koruyun.

Aksi takdirde, kaynaklarla ilgili ücretlerden kaçınmak için kaynakları kullanmayı bitirdiyseniz, oluşturduğunuz Azure kaynak grubunu silebilirsiniz.

Uyarı

Silinen kaynak grupları geri alınamaz. Bir kaynak grubunu sildiğinizde, kaynak grubundaki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Kaynakları, tutmak istediğiniz kaynakları içeren mevcut bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı tek tek silebilirsiniz.

Kaynak grubunu silme

  1. Azure portalında oturum açın ve Kaynak grupları’nı seçin.

  2. Silinecek kaynak grubunu seçin.

    Çok sayıda kaynak grubu varsa, Herhangi bir alan için filtre uygula alanına, bu makaleyi tamamlamak için oluşturduğunuz kaynak grubunun adını girin. Arama sonuçları listesinde kaynak grubunu seçin.

    Silinecek kaynak gruplarının listesini gösteren ekran görüntüsü.

  3. Kaynak grubunu sil'i seçin.

  4. Kaynak grubunu sil bölmesinde, onaylamak için kaynak grubunuzun adını girin ve sil'i seçin.

    Silme işlemini onaylamak için kaynak adının girilmesi gereken bir kutuyu gösteren ekran görüntüsü.

Birkaç dakika içinde kaynak grubu ve tüm kaynakları silinir.