التشغيل السريع: استخدم Azure Cache لـ Redis في .NET Core
في هذا التشغيل السريع، يمكنك دمج Azure Cache لـ Redis في تطبيق .NET Core للوصول إلى ذاكرة تخزين مؤقت آمنة ومخصصة يمكن الوصول إليها من أي تطبيق داخل Azure. يمكنك استخدام عميل StackExchange.Redis بشكل خاص مع رمز C# في تطبيق وحدة تحكم .NET Core.
انتقل إلى الكود على GitHub
استنسخ المستودع https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet-core على GitHub.
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاني
- .NET Core SDK
إنشاء ذاكرة تخزين مؤقت
لإنشاء ذاكرة تخزين مؤقت، قم بتسجيل الدخول إلى منصة Azure وحدد إنشاء مورد.
في صفحة بدء الاستخدام ، اكتب ذاكرة التخزين المؤقت Azure ل Redis في مربع البحث. وبعد ذلك، حدد إنشاء.
في صفحة New Redis Cache ، قم بتكوين إعدادات ذاكرة التخزين المؤقت.
الإعدادات اختيار قيمة الوصف الاشتراك اضغط على القائمة المنسدلة وحدد اشتراكك. الاشتراك الذي يتم بموجبه إنشاء مثيل Azure Cache الجديد لـ Redis. مجموعة الموارد حدد مجموعة موارد، أو حدد "إCreate new"، ثم أدخل اسماً فريداً لمجموعة الموارد الجديدة. اسم مجموعة الموارد المراد إنشاء ذاكرة التخزين المؤقت والموارد الأخرى فيها. وعبر وضع جميع موارد التطبيق في مجموعة موارد واحدة، يمكنك إدارتها أو حذفها بسهولة. اسم DNS أدخل اسمًا فريدًا. يجب أن يكون اسم ذاكرة التخزين المؤقت عبارة عن سلسلة بين 1 و63 حرفًا تحتوي فقط على أرقام أو أحرف أو واصلات. لا بد أن يبدأ الاسم وينتهي برقم أو حرف، ولا يمكن أن يحتوي على واصلات متتالية. اسم مضيف مثيل ذاكرة التخزين المؤقت هو <اسم DNS.redis.cache.windows.net>. Location من القائمة المنسدلة، حدد موقعاً. حدد منطقة بالقرب من الخدمات الأخرى التي تستخدم ذاكرة التخزين المؤقت. ذاكرة التخزين المؤقت SKU منسدلة وحدد SKU. تحدد SKU معلمات الحجم والأداء والميزات المتوفرة لذاكرة التخزين المؤقت. لمزيد من المعلومات، راجع Azure Cache من أجل Redis Overview. حجم ذاكرة التخزين المؤقت القائمة المنسدلة وحدد حجم ذاكرة التخزين المؤقت لمزيد من المعلومات، راجع Azure Cache من أجل Redis Overview. حدد علامة التبويب Networking أو انقر فوق زر Networking في أسفل الصفحة.
في علامة التبويب شبكة الاتصال، حدد أسلوب الاتصال.
حدد علامة التبويب Next: Advanced أو حدد الزر Next: Advanced أسفل الصفحة لمشاهدة علامة التبويب Advanced.
- بشكل افتراضي، بالنسبة إلى ذاكرة التخزين المؤقت الأساسية أو القياسية أو المتميزة الجديدة، يتم تمكين مصادقة Microsoft Entra وتعطيل مصادقة مفاتيح الوصول.
- بالنسبة لذاكرة التخزين المؤقت الأساسية أو القياسية، يمكنك اختيار التحديد لمنفذ غير TLS.
- بالنسبة لذاكرة التخزين المؤقت القياسية والمميزة، يمكنك اختيار تمكين مناطق التوفر. لا يمكنك تعطيل مناطق التوفر بعد إنشاء ذاكرة التخزين المؤقت.
- بالنسبة لذاكرة التخزين المؤقت Premium، قم بتكوين الإعدادات لمنفذ غير TLS والتكتلة والهوية المدارة واستمرارية البيانات.
هام
للحصول على الأمان الأمثل، توصي Microsoft باستخدام معرف Microsoft Entra مع الهويات المدارة لتخويل الطلبات مقابل ذاكرة التخزين المؤقت كلما أمكن ذلك. يوفر التخويل باستخدام معرف Microsoft Entra والهويات المدارة أمانا فائقا وسهولة استخدام عبر تخويل المفتاح المشترك. لمزيد من التفاصيل حول استخدام الهويات المدارة مع ذاكرات التخزين المؤقت، راجع استخدام معرف Microsoft Entra لمصادقة ذاكرة التخزين المؤقت.
حدد علامة Next: Tags أو حدد الزر Next: Tags في أسفل الصفحة.
اختياريا، من علامة التبويب أدخل الاسم والقيمة إذا كنت ترغب في تصنيف المورد.
حدد "Review + create". في Review + create، يتحقق Azure من صحة التكوين الخاص بك.
بعد ظهور رسالة "التحقق من الصحة" الخضراء، حدد إنشاء.
يستغرق إنشاء ذاكرة التخزين المؤقت بعض الوقت. يمكنك مراقبة التقدم المحرز فيAzure Cache لـصفحة Redis الخاصة بالنظرة العامة. عندما تظهر الحالة ك تشغيل، تكون ذاكرة التخزين المؤقت جاهزة للاستخدام.
استرجع اسم المضيف والمنافذ ومفاتيح الوصول من مدخل Azure
لتوصيل مخزن Azure الخاص بك لخادم Redis، يحتاج العميل المخزن إلى اسم المضيف والمنافذ ومفتاح للتخزين المؤقت. قد يشير بعض العملاء إلى هذه العناصر بأسماء مختلفة قليلًا. يمكنك الحصول على اسم المضيف والمنافذ والمفاتيح من مدخل Microsoft Azure.
للحصول على مفاتيح الوصول، حدد Authentication من قائمة Resource. ثم حدد علامة التبويب مفاتيح الوصول.
للحصول على اسم المضيف والمنافذ لذاكرة التخزين المؤقت، حدد نظرة عامة من قائمة الموارد. اسم المضيف هو من نموذج<DNS name>.redis.cache.windows.net.
دون ملاحظة HOST NAME ومفتاح الوصول الأساسي. سوف تستخدم هذه القيم في وقت لاحق لبنية بيانات سرية CacheConnection.
أضف بيانات سرية محليًا لسلسلة الاتصال
في إطار الأوامر الخاصة بك قم بتنفيذ الأمر التالي لتخزين سر جديد يسمى CacheConnection، بعد استبدال العناصر النائبة (بما في ذلك أقواس الزاوية) لاسم ذاكرة التخزين المؤقت ومفتاح الوصول الأساسي:
dotnet user-secrets set CacheConnection "<cache name>.redis.cache.windows.net,abortConnect=false,ssl=true,allowAdmin=true,password=<primary-access-key>"
الاتصال مع ذاكرة التخزين المؤقت مع RedisConnection
يتم إدارة الاتصال بذاكرة التخزين المؤقت الخاصة بك من قبل RedisConnection
الفئة. تم إجراء الاتصال لأول مرة في هذه العبارة من Program.cs
:
_redisConnection = await RedisConnection.InitializeAsync(connectionString: configuration["CacheConnection"].ToString());
RedisConnection.cs
ترى أن مساحة الاسم StackExchange.Redis
قد تمت إضافتها إلى الرمز. هذا مطلوب للفئةRedisConnection
.
using StackExchange.Redis;
تضمن التعليمة البرمجية RedisConnection
وجود اتصال سليم دائمًا بذاكرة التخزين المؤقت من خلال إدارة مثيل ConnectionMultiplexer
من StackExchange.Redis
. تقوم الفئة RedisConnection
بإعادة إنشاء الاتصال عند فقد الاتصال وتعذر إعادة الاتصال تلقائيًا.
لمزيد من المعلومات، راجع StackExchange.Redis والتعليمة البرمجية الموجودة في مستودع GitHub.
تنفيذ أوامر ذاكرة التخزين المؤقت
في program.cs
، يمكنك مشاهدة التعليمة البرمجية التالية فيما يتعلق بالأسلوب RunRedisCommandsAsync
في الفئة Program
لتطبيق وحدة التحكم:
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
وأساليب StringGetAsync
.
في المثال، يمكنك أن ترى المفتاح Message
تم تعيينه إلى قيمة. قام التطبيق بتحديث تلك القيمة المخزنة. قام التطبيق أيضًا بتنفيذ PING
والأمر.
العمل مع كائنات .NET في ذاكرة التخزين المؤقت
يخزن خادم Redis معظم البيانات كسلاسل، ولكن يمكن أن تحتوي هذه السلاسل على العديد من أنواع البيانات، بما في ذلك البيانات الثنائية المتسلسلة، والتي يمكن استخدامها عند تخزين كائنات .NET في ذاكرة التخزين المؤقت.
يمكن لـ Azure Cache لـ Redis تخزين كائنات .NET وأنواع البيانات الأولية مؤقتًا، ولكن قبل أن يتم تخزين كائن .NET مؤقتًا، يجب إجراء تسلسل.
تقع مسؤولية تسلسل كائن .NET على عاتق مطور التطبيق، ويمنح المطور المرونة في اختيار المتسلسل.
تم تعريف الفئة Employee
التالية في Program.cs بحيث يمكن أن تظهر العينة أيضًا كيفية الحصول على عنصر متسلسل وتعيينه:
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;
}
}
تشغيل تطبيق العرض التوضيحي
إذا قمت بفتح أي ملفات، فاحفظها وأنشئ التطبيق باستخدام الأمر التالي:
dotnet build
تشغيل التطبيق مع الأمر التالي لاختبار تسلسل كائنات .NET:
dotnet run
تنظيف الموارد
إذا واصلت استخدام هذه البداية السريعة، يمكنك الاحتفاظ بالموارد التي أنشأتها وإعادة استخدامها.
وإلا، في حال كنت قد انتهيت من تطبيق نموذج التشغيل السريع، يمكنك حذف موارد Azure التي تم إنشاؤها في هذه البداية السريعة لتجنب المصاريف.
هام
لا يمكن التراجع عن حذف مجموعة الموارد، ويتم حذف مجموعة الموارد وجميع الموارد الموجودة فيها نهائيًّا. تأكد من عدم حذف مجموعة الموارد الخاطئة أو الموارد غير الصحيحة بطريق الخطأ. في حال قمت بإنشاء الموارد لاستضافة هذا النموذج داخل مجموعة موارد موجودة تحتوي على الموارد التي تريد الاحتفاظ بها، يمكنك حذف كل مورد على حدة على اليسار بدلاً من حذف مجموعة الموارد.
لحذف مجموعة موارد
سجل الدخول إلىمدخل Azureوحددمجموعات الموارد.
في المربع تصفية حسب الاسم...، اكتب اسم مجموعة الموارد. استخدمت إرشادات هذه المقالة مجموعة موارد تسمى TestResources. في مجموعة الموارد في قائمة النتائج، حدد ... ثم حذف مجموعة الموارد.
سيطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد حذف.
بعد لحظات قليلة، يتم حذف مجموعة الموارد وكافة الموارد المضمنة.