إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة كيفية استخدام إما Azure Managed Redis أو Azure Cache for Redis مع Azure Functions لإنشاء بنيات محسنة بلا خادم ومحركها الحدث.
يوفر Azure Functions نموذج برمجة يستند إلى الحدث حيث تكون المشغلات والروابط ميزات رئيسية. باستخدام Azure Functions، يمكنك بسهولة إنشاء تطبيقات بلا خادم تستند إلى الحدث. توفر خدمات Azure Redis (Azure Managed Redis و Azure Cache for Redis) مجموعة من الكتل الإنشائية وأفضل الممارسات لبناء التطبيقات الموزعة، بما في ذلك الخدمات المصغرة وإدارة الحالة والمراسلة pub/sub والمزيد.
يمكن استخدام Azure Redis كمشغل Azure Functions، ما يسمح لك ببدء سير عمل بلا خادم. يمكن أن تكون هذه الوظيفة مفيدة للغاية في بنيات البيانات مثل ذاكرة التخزين المؤقت للكتابة في الخلف، أو أي بنيات تستند إلى الحدث.
يمكنك دمج Azure Redis Azure Functions لإنشاء وظائف تتفاعل مع الأحداث من Azure Redis أو الأنظمة الخارجية.
| الإجراء | الاتجاه |
|---|---|
| تشغيل على الرسائل الفرعية ل Redis pub | المشغِّل |
| المشغل على قوائم Redis | المشغِّل |
| المشغل على تدفقات Redis | المشغِّل |
| قراءة قيمة مخزنة مؤقتا | إدخال |
| كتابة قيم إلى ذاكرة التخزين المؤقت | المخرجات |
نطاق توفر مشغلات الوظائف والروابط
| المستوى | Azure Cache for Redis (Basic وStandard وPremium وEnterprise وEnterprise Flash) | Azure Redis المدارة (الذاكرة المحسنة، الأساسية، الحوسبة المحسنة، Flash Optimized) |
|---|---|---|
| النشر والاشتراك | نعم | نعم |
| القوائم | نعم | نعم |
| عمليات النقل المستمر | نعم | نعم |
| Bindings | نعم | نعم |
هام
مشغلات Redis مدعومة حاليا فقط للوظائف التي تعمل إما في خطة Elastic Premium أو خطة App Service مخصصة.
تثبيت الملحق
يتم تشغيل الوظائف في عملية عامل C# معزولة. لمعرفة المزيد، راجع Guide لتشغيل C# Azure Functions في عملية عامل معزولة.
أضف الملحق إلى مشروعك عن طريق تثبيت this حزمة NuGet.
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis
تثبيت الحزمة
لكي تتمكن من استخدام ملحق الربط هذا في تطبيقك، تأكد من أن ملف host.json في جذر مشروعك يحتوي على هذا extensionBundle المرجع:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
في هذا المثال، version ترشد قيمة [4.0.0, 5.0.0) مضيف الوظائف إلى استخدام إصدار حزمة على الأقل 4.0.0 ولكن أقل من 5.0.0، والذي يتضمن جميع الإصدارات المحتملة من 4.x. يحافظ هذا النص بشكل فعال على تطبيقك على أحدث إصدار ثانوي متوفر من مجموعة ملحقات v4.x.
عندما يكون ذلك ممكنا، يجب استخدام أحدث إصدار رئيسي لحزمة الملحقات والسماح لوقت التشغيل بالحفاظ تلقائيا على أحدث إصدار ثانوي. يمكنك عرض محتويات أحدث مجموعة على صفحة إصدار حزم extension. لمزيد من المعلومات، راجع Azure Functions حزم الملحقات.
تحديث الحزم
أضف حزمة Azure Functions Java Redis Annotations إلى مشروعك عن طريق تحديث ملف pom.xml لإضافة هذه التبعية:
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-redis</artifactId>
<version>1.0.0</version>
</dependency>
connection string Redis
Azure تحتوي مشغلات Redis والروابط على خاصية مطلوبة تشير إلى إعداد التطبيق أو اسم المجموعة الذي يحتوي على معلومات اتصال ذاكرة التخزين المؤقت. يبحث مشغل Redis أو الربط عن متغير بيئي يحمل connection string بالاسم الذي تم تمريره إلى المعلمة Connection.
في التطوير المحلي، Connection يمكن تعريف باستخدام ملف local.settings.json . عند النشر إلى Azure، يمكن استخدام إعدادات application.
عند الاتصال بمثيل ذاكرة التخزين المؤقت باستخدام وظيفة Azure، يمكنك استخدام أحد هذه الأنواع من الاتصالات في عمليات النشر الخاصة بك:
- الهوية المدارة المعينة من قبل المستخدم
- الهوية المدارة المعينة من قبل النظام
- سلسلة الاتصال
- كيان الخدمة
يجب أن تكون الهوية المدارة المعينة من قبل المستخدم مقترنة بتطبيق الوظائف الخاص بك، ويجب أيضا منح هذه الهوية أذونات صريحة في خدمة ذاكرة التخزين المؤقت. لمزيد من المعلومات، راجع استخدام Microsoft Entra ID لمصادقة ذاكرة التخزين المؤقت.
تظهر هذه الأمثلة اسم المفتاح وقيمة إعدادات التطبيق المطلوبة للاتصال بكل خدمة ذاكرة تخزين مؤقت استنادا إلى نوع مصادقة العميل، على افتراض تعيين Connection الخاصية في الربط إلى Redis.
"Redis__redisHostName": "<cacheName>.<region>.redis.azure.net",
"Redis__principalId": "<principalId>",
"Redis__clientId": "<clientId>"