التشغيل السريع: استخدم Azure Cache for Redis في NET Framework
في هذا التشغيل السريع، يمكنك دمج Azure Cache for Redis في تطبيق .NET Core للوصول إلى ذاكرة تخزين مؤقت آمنة ومخصصة يمكن الوصول إليها من أي تطبيق داخل Azure. يمكنك استخدام عميل StackExchange.Redis بشكل خاص مع التعليمة البرمجية C# في تطبيق وحدة تحكم .NET.
انتقل إلى الكود على GitHub
استنساخ المستودع من (https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet على GitHub.
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاني
- Visual Studio 2019
- .NET Framework 4 أو أعلى، وهو مطلوب من قبل عميل StackExchange.Redis.
إنشاء ذاكرة تخزين مؤقت
لإنشاء ذاكرة تخزين مؤقت، قم بتسجيل الدخول إلى منصة 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.
- بالنسبة لذاكرة التخزين المؤقت الأساسية أو القياسية، قم بتبديل التحديد لمنفذ غير TLS. يمكنك أيضا تحديد ما إذا كنت تريد تمكين مصادقة Microsoft Entra.
- بالنسبة لذاكرة التخزين المؤقت Premium، قم بتكوين الإعدادات لمنفذ غير TLS والتكتلة والهوية المدارة واستمرارية البيانات. يمكنك أيضا تحديد ما إذا كنت تريد تمكين مصادقة 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.
قم بإنشاء ملف على الكمبيوتر باسم CacheSecrets.config وضعه في C:\AppSecrets\CacheSecrets.config.
قم بتحرير ملف CacheSecrets.config وإضافة المحتويات التالية:
<appSettings> <add key="CacheConnection" value="<host-name>,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/> </appSettings>
استبدل
<host-name>
باسم مُضيف الذاكرة المؤقتة.استبدل
<access-key>
بالمفتاح الأساسي للذاكرة المؤقتة.حفظ الملف.
تكوين عميل ذاكرة التخزين المؤقت
في هذا المقطع، قم بإعداد تطبيق وحدة التحكم لاستخدام عميل StackExchange.Redis لـ .NET.
حدد Tools>NuGet Package Manager>Package Manager Console ثم قم بتشغيل الأمر التالي في نافذة Package Manager Console.
Install-Package StackExchange.Redis
بمجرد اكتمال التثبيت، يتوفر عميل التخزين المؤقت StackExchange.Redis للاستخدام مع المشروع الخاص بك.
الاتصال بذاكرة التخزين المؤقت للبيانات السرية
في Visual Studio، افتح ملف App.config الخاص بك للتحقق من احتوائه على appSettings
file
سمة تشير إلى الملف CacheSecrets.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>
لا تقم أبدًا بتخزين بيانات الاعتماد في التعليمات البرمجية المصدر. للحفاظ على بساطة هذه العينة، نستخدم ملف تكوين أسرار خارجيًا. وهناك نهج أفضل لاستخدام Azure Key Vault مع شهادات.
الاتصال مع ذاكرة التخزين المؤقت مع RedisConnection
يتم إدارة الاتصال بذاكرة التخزين المؤقت الخاصة بك من قبل RedisConnection
الفئة. تم إجراء الاتصال لأول مرة في هذه العبارة من Program.cs
:
_redisConnection = await RedisConnection.InitializeAsync(connectionString: ConfigurationManager.AppSettings["CacheConnection"].ToString());
يتم استخدام قيمة CacheConnection appSetting للإشارة إلى سلسلة اتصال ذاكرة التخزين المؤقت من مدخل Azure كمعلمة كلمة المرور.
في RedisConnection.cs
، ترى مساحة الاسم StackExchange.Redis
مع الكلمة الأساسية using
. هذا مطلوب للفئة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 على عاتق مطور التطبيق، ويمنح المطور المرونة في اختيار المتسلسل.
من الطرق البسيطة لتسلسل الكائنات استخدام أساليب تسلسل JsonConvert
في System.text.Json
.
أضف مساحة الاسم System.text.Json
إلى Visual Studio:
حدد Tools>NuGet Package Manager>Package Manager Console.
بعد ذلك ، قم بتشغيل الأمر التالي من نافذة وحدة تحكم إدارة الحزمة.
Install-Package system.text.json
تم تعريف الفئة Employee
التالية في Program.cs بحيث يمكن أن تظهر العينة أيضًا كيفية الحصول على عنصر متسلسل وتعيينه:
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;
}
}
تشغيل تطبيق العرض التوضيحي
اضغط على Ctrl + F5 لإنشاء وتشغيل تطبيق وحدة التحكم لاختبار تسلسل كائنات .NET.
تنظيف الموارد
إذا واصلت استخدام هذا التشغيل السريع، يمكنك الاحتفاظ بالموارد التي قمت بإنشائها وإعادة استخدامها.
وإلا، في حال كنت قد انتهيت من تطبيق نموذج التشغيل السريع، يمكنك حذف موارد Azure التي تم إنشاؤها في هذا التشغيل السريع لتجنب الرسوم.
هام
لا يمكن التراجع عن حذف مجموعة الموارد، ويتم حذف مجموعة الموارد وجميع الموارد الموجودة فيها نهائيًّا. تأكد من عدم حذف مجموعة الموارد الخاطئة أو الموارد غير الصحيحة بطريق الخطأ. في حال قمت بإنشاء الموارد لاستضافة هذا النموذج داخل مجموعة موارد موجودة تحتوي على الموارد التي تريد الاحتفاظ بها، يمكنك حذف كل مورد على حدة على اليسار بدلاً من حذف مجموعة الموارد.
سجل الدخول إلىمدخل Azureوحددمجموعات الموارد.
في المربع تصفية حسب الاسم...، اكتب اسم مجموعة الموارد. استخدمت إرشادات هذه المقالة مجموعة موارد تسمى TestResources. في مجموعة الموارد في قائمة النتائج، حدد ... ثم حذف مجموعة الموارد.
يُطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد حذف.
بعد لحظات قليلة، يتم حذف مجموعة الموارد وكافة الموارد المضمنة.