Hızlı Başlangıç: .NET Framework içinde 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şim elde etmek için Redis için Azure Cache bir .NET Framework uygulamasına ekleyeceksiniz. StackExchange.Redis istemcisini özellikle bir .NET konsol uygulamasında C# koduyla kullanırsınız.
GitHub'da koda atlayın
Depoyu (https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet GitHub'da) kopyalayın.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Visual Studio 2019
- StackExchange.Redis istemcisi için gereken .NET Framework 4 veya üzeri.
Önbellek oluşturma
Önbellek oluşturmak için Azure portalında oturum açın ve Kaynak oluştur'u seçin.
Yeni sayfasında Veritabanları'nı ve ardından Redis için Azure Cache'ı seçin.
Yeni Redis Önbelleği sayfasında, yeni önbelleğinizin ayarlarını yapılandırın.
Ayar Bir değer seçin Açıklama Abonelik Açılan menüye gidin ve aboneliğinizi seçin. Bu yeni Redis için Azure Cache örneğinin oluşturulacağı abonelik. Kaynak grubu Açılan menüden bir kaynak grubu seçin veya Yeni oluştur'u seçip yeni bir kaynak grubu adı girin. Önbelleğinizi ve diğer kaynakları oluşturacağınız 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 veya 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ı< DNS adı.redis.cache.windows.net.> Konum Açılan menüye gidin ve bir konum seçin. Önbelleğinizi kullanan diğer hizmetlerin yakınında bir bölge seçin. Önbellek türü Açılan menüye gidin ve bir katman seçin. Katman, önbellek için kullanılabilen boyutu, performansı ve özellikleri belirler. Daha fazla bilgi için bkz. Redis için Azure Cache Genel Bakış. Ağ sekmesini seçin veya sayfanın en altındaki Ağ düğmesini seçin.
Ağ sekmesinde bağlantı yönteminizi seçin.
İleri: Gelişmiş sekmesini seçin veya Gelişmiş sekmesini görmek için sayfanın alt kısmındaki İleri: Gelişmiş düğmesini seçin.
- Temel veya Standart önbellekler için TLS olmayan bir bağlantı noktası için seçimi değiştirin. Microsoft Entra Authentication'ı etkinleştirmek isteyip istemediğinizi de seçebilirsiniz.
- 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. Microsoft Entra Authentication'ı etkinleştirmek isteyip istemediğinizi de seçebilirsiniz.
Sonraki: Etiketler sekmesini seçin veya sayfanın en altındaki İleri: Etiketler düğmesini seçin.
İsteğe bağlı olarak, kaynağı kategorilere ayırmak istiyorsanız Etiketler sekmesinde adı ve değeri girin.
Gözden geçir ve oluştur’u seçin. Azure'ın yapılandırmanızı doğruladığı Gözden Geçir ve oluştur sekmesine yönlendirilirsiniz.
Yeşil Doğrulama başarılı iletisi görüntülendiğinde Oluştur'u seçin.
Önbelleğin oluşturulması biraz zaman alır. İlerleme durumunu Redis için Azure Cache Genel Bakış sayfasından izleyebilirsiniz. Durum Çalışıyor olarak gösterildiğinde önbellek kullanıma hazırdır.
Azure portalından konak adını, bağlantı noktalarını ve erişim anahtarlarını alma
Redis için Azure Cache sunucunuzu bağlamak için önbellek istemcisinin ana bilgisayar adına, bağlantı noktalarına ve önbellek anahtarına ihtiyacı vardır. Bazı istemciler bu öğelere biraz daha farklı adlarla başvurabilir. Konak adını, bağlantı noktalarını ve anahtarları Azure portalından alabilirsiniz.
Erişim anahtarlarını almak için Kaynak menüsünden Kimlik Doğrulaması'nı seçin. Ardından Erişim tuşları sekmesini seçin.
Önbelleğinizin ana bilgisayar adını ve bağlantı noktalarını almak için Kaynak menüsünden Genel Bakış'ı seçin. Ana bilgisayar adı DNS name.redis.cache.windows.net biçimindedir<.>
Bilgisayarınızda CacheSecrets.config adlı bir dosya oluşturun ve C:\AppSecrets\CacheSecrets.config dizinini yerleştirin.
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.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.
Visual Studio'da Araçlar>NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu'nu seçin ve Paket Yöneticisi Konsolu penceresinden aşağıdaki komutu çalıştırın.
Install-Package StackExchange.Redis
Yükleme tamamlandıktan sonra StackExchange.Redis önbellek istemcisi, projenizle kullanılabilir olur.
Gizli Diziler önbelleğine Bağlan
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>
Kaynak kodunda asla kimlik bilgileri 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.
Redis Bağlan ion ile önbelleğe Bağlan
Önbelleğinize bağlantı sınıfı tarafından RedisConnection
yönetilir. Bağlantı ilk olarak şu deyimden Program.cs
yapılır:
_redisConnection = await RedisConnection.InitializeAsync(connectionString: ConfigurationManager.AppSettings["CacheConnection"].ToString());
CacheConnection appSetting değeri parola parametresi olarak Azure portalından önbellek bağlantısı dizesine başvurmak için kullanılır.
içinde RedisConnection.cs
, anahtar sözcüğünü içeren StackExchange.Redis
ad alanını using
görürsünüz. Bu, sınıf için RedisConnection
gereklidir.
using StackExchange.Redis;
Kod, RedisConnection
örneğini uygulamasından StackExchange.Redis
yöneterek ConnectionMultiplexer
önbellekle her zaman iyi durumda bir bağlantı olmasını sağlar. Sınıfı, RedisConnection
bağlantı kesildiğinde ve otomatik olarak yeniden bağlanamadığında bağlantıyı yeniden oluşturur.
Daha fazla bilgi için bkz . StackExchange.Redis ve GitHub deposundaki kod.
Önbellek komutlarını yürütme
içinde program.cs
, konsol uygulamasının RunRedisCommandsAsync
sınıfında yöntemi Program
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 seri hale getirilmelidir.
Bu .NET nesne serileştirmesi uygulama geliştiricisinin sorumluluğundadır ve geliştiriciye seri hale getirici tercihinde esneklik sağlar.
Nesneleri seri hale getirmenin JsonConvert
basit yollarından biri, içinde System.text.Json
serileştirme yöntemlerini kullanmaktır.
Ad alanını System.text.Json
Visual Studio'ya ekleyin:
Araçlar>NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu*'nu seçin.
Ardından, Paket Yöneticisi Konsolu penceresinden 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ı da 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ştirilmesini test etmek üzere konsol uygulamasını oluşturmak ve çalıştırmak için Ctrl+F5 tuşlarına basın.
Kaynakları temizleme
Bu hızlı başlangıcı kullanmaya devam ederseniz, oluşturulan kaynakları tutabilir ve yeniden kullanabilirsiniz.
Aksi takdirde, hızlı başlangıç örnek uygulamasını tamamladıysanız ücret yansıtılmaması için bu hızlı başlangıçta oluşturulan Azure kaynaklarını silebilirsiniz.
Önemli
Bir kaynak grubunu silme işlemi geri alınamaz ve kaynak grubunun ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu örneği tutmak istediğiniz kaynakları içeren mevcut bir kaynak grubunda barındırmak için kaynakları oluşturduysanız, kaynak grubunu silmek yerine soldaki her kaynağı tek tek silebilirsiniz.
Azure portalında oturum açın ve Kaynak grupları’nı seçin.
Ada göre filtrele... metin kutusuna kaynak grubunuzun adını girin. Bu makaledeki yönergelerde TestResources adlı bir kaynak grubu kullanılmıştır. Sonuç listesindeki kaynak grubunuzda ... ve ardından Kaynak grubunu sil'i seçin.
Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını yazın ve Sil'i seçin.
Birkaç dakika sonra kaynak grubu ve içerdiği kaynakların tümü silinir.