التشغيل السريع: استخدم 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.

المتطلبات الأساسية

إنشاء ذاكرة تخزين مؤقت

  1. لإنشاء ذاكرة تخزين مؤقت، قم بتسجيل الدخول إلى منصة Azure وحدد إنشاء مورد.

    يكون

  2. في صفحة بدء الاستخدام ، اكتب ذاكرة التخزين المؤقت Azure ل Redis في مربع البحث. وبعد ذلك، حدد إنشاء.

    لقطة شاشة ل Azure Marketplace مع ذاكرة التخزين المؤقت Azure ل Redis في مربع البحث ويتم تمييز الإنشاء بمربع أحمر.

  3. في صفحة 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.
  4. حدد علامة التبويب Networking أو انقر فوق زر Networking في أسفل الصفحة.

  5. في علامة التبويب شبكة الاتصال، حدد أسلوب الاتصال.

  6. حدد علامة التبويب Next: Advanced أو حدد الزر Next: Advanced أسفل الصفحة لمشاهدة علامة التبويب Advanced.

    لقطة شاشة تعرض علامة التبويب خيارات متقدمة في جزء العمل والخيار المتاح للتحديد.

    • بشكل افتراضي، بالنسبة إلى ذاكرة التخزين المؤقت الأساسية أو القياسية أو المتميزة الجديدة، يتم تمكين مصادقة Microsoft Entra وتعطيل مصادقة مفاتيح الوصول.
    • بالنسبة لذاكرة التخزين المؤقت الأساسية أو القياسية، يمكنك اختيار التحديد لمنفذ غير TLS.
    • بالنسبة لذاكرة التخزين المؤقت القياسية والمميزة، يمكنك اختيار تمكين مناطق التوفر. لا يمكنك تعطيل مناطق التوفر بعد إنشاء ذاكرة التخزين المؤقت.
    • بالنسبة لذاكرة التخزين المؤقت Premium، قم بتكوين الإعدادات لمنفذ غير TLS والتكتلة والهوية المدارة واستمرارية البيانات.

    هام

    للحصول على الأمان الأمثل، توصي Microsoft باستخدام معرف Microsoft Entra مع الهويات المدارة لتخويل الطلبات مقابل ذاكرة التخزين المؤقت كلما أمكن ذلك. يوفر التخويل باستخدام معرف Microsoft Entra والهويات المدارة أمانا فائقا وسهولة استخدام عبر تخويل المفتاح المشترك. لمزيد من التفاصيل حول استخدام الهويات المدارة مع ذاكرات التخزين المؤقت، راجع استخدام معرف Microsoft Entra لمصادقة ذاكرة التخزين المؤقت.

  7. حدد علامة Next: Tags أو حدد الزر Next: Tags في أسفل الصفحة.

  8. اختياريا، من علامة التبويب أدخل الاسم والقيمة إذا كنت ترغب في تصنيف المورد.

  9. حدد "Review + create". في Review + create، يتحقق Azure من صحة التكوين الخاص بك.

  10. بعد ظهور رسالة "التحقق من الصحة" الخضراء، حدد إنشاء.

يستغرق إنشاء ذاكرة التخزين المؤقت بعض الوقت. يمكنك مراقبة التقدم المحرز فيAzure Cache لـصفحة Redis الخاصة بالنظرة العامة. عندما تظهر الحالة ك تشغيل، تكون ذاكرة التخزين المؤقت جاهزة للاستخدام.

استرجع اسم المضيف والمنافذ ومفاتيح الوصول من مدخل Azure

لتوصيل مخزن Azure الخاص بك لخادم Redis، يحتاج العميل المخزن إلى اسم المضيف والمنافذ ومفتاح للتخزين المؤقت. قد يشير بعض العملاء إلى هذه العناصر بأسماء مختلفة قليلًا. يمكنك الحصول على اسم المضيف والمنافذ والمفاتيح من مدخل Microsoft Azure.

  • للحصول على مفاتيح الوصول، حدد Authentication من قائمة Resource. ثم حدد علامة التبويب مفاتيح الوصول.

    Azure Cache لمفاتيح Redis

  • للحصول على اسم المضيف والمنافذ لذاكرة التخزين المؤقت، حدد نظرة عامة من قائمة الموارد. اسم المضيف هو من نموذج<DNS name>.redis.cache.windows.net.

    خصائص Azure Cache for Redis

دون ملاحظة 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 التي تم إنشاؤها في هذه البداية السريعة لتجنب المصاريف.

هام

لا يمكن التراجع عن حذف مجموعة الموارد، ويتم حذف مجموعة الموارد وجميع الموارد الموجودة فيها نهائيًّا. تأكد من عدم حذف مجموعة الموارد الخاطئة أو الموارد غير الصحيحة بطريق الخطأ. في حال قمت بإنشاء الموارد لاستضافة هذا النموذج داخل مجموعة موارد موجودة تحتوي على الموارد التي تريد الاحتفاظ بها، يمكنك حذف كل مورد على حدة على اليسار بدلاً من حذف مجموعة الموارد.

لحذف مجموعة موارد

  1. سجل الدخول إلىمدخل Azureوحددمجموعات الموارد.

  2. في المربع تصفية حسب الاسم...، اكتب اسم مجموعة الموارد. استخدمت إرشادات هذه المقالة مجموعة موارد تسمى TestResources. في مجموعة الموارد في قائمة النتائج، حدد ... ثم حذف مجموعة الموارد.

    حذف

  3. سيطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد حذف.

بعد لحظات قليلة، يتم حذف مجموعة الموارد وكافة الموارد المضمنة.

الخطوات التالية