التشغيل السريع: استخدام ذاكرة التخزين المؤقت Azure ل Redis مع تطبيق Node.js
في هذا التشغيل السريع، يمكنك دمج Azure Cache for Redis في تطبيق Node.js للوصول إلى ذاكرة تخزين مؤقت آمنة ومخصصة يمكن الوصول إليها من أي تطبيق في Azure.
المتطلبات الأساسية
- اشتراك Azure. إنشاء واحد مجانا
- Node.JS مثبت. للحصول على معلومات حول كيفية تثبيت Node وnpm على كمبيوتر Windows، راجع تثبيت Node.js على Windows.
إنشاء ذاكرة تخزين مؤقت
لإنشاء ذاكرة تخزين مؤقت، سجل الدخول إلى مدخل Microsoft Azure. في قائمة المدخل، حدد Create a resource.
في جزء بدء الاستخدام ، أدخل Azure Cache for Redis في شريط البحث. في نتائج البحث، ابحث عن ذاكرة التخزين المؤقت Azure ل Redis، ثم حدد إنشاء.
في جزء New Redis Cache ، في علامة التبويب Basics ، قم بتكوين الإعدادات التالية لذاكرة التخزين المؤقت الخاصة بك:
الإعدادات الإجراء الوصف الاشتراك حدد اشتراك Azure الخاص بك. الاشتراك الذي يجب استخدامه لإنشاء مثيل جديد من Azure Cache ل Redis. مجموعة الموارد حدد مجموعة موارد، أو حدد إنشاء جديد وأدخل اسم مجموعة موارد جديدة. اسم لمجموعة الموارد التي سيتم فيها إنشاء ذاكرة التخزين المؤقت والموارد الأخرى. وعبر وضع جميع موارد التطبيق في مجموعة موارد واحدة، يمكنك إدارتها أو حذفها بسهولة. اسم DNS أدخل اسمًا فريدًا. يجب أن يكون اسم ذاكرة التخزين المؤقت سلسلة من 1 إلى 63 حرفا تحتوي فقط على أرقام وأحرف وواصلات. يجب أن يبدأ الاسم وينتهي برقم أو حرف، ولا يمكن أن يحتوي على واصلات متتالية. اسم مضيف مثيل ذاكرة التخزين المؤقت هو \<DNS name>.redis.cache.windows.net
.Location تحديد الموقع. منطقة Azure بالقرب من الخدمات الأخرى التي تستخدم ذاكرة التخزين المؤقت الخاصة بك. ذاكرة التخزين المؤقت SKU حدد SKU. تحدد SKU معلمات الحجم والأداء والميزة المتوفرة لذاكرة التخزين المؤقت. لمزيد من المعلومات، راجع Azure Cache من أجل Redis overview. حجم ذاكرة التخزين المؤقت حدد حجم ذاكرة التخزين المؤقت. لمزيد من المعلومات، راجع Azure Cache من أجل Redis overview. حدد علامة التبويب Networking أو حدد Next: Networking.
في علامة التبويب Networking ، حدد أسلوب اتصال لاستخدامه في ذاكرة التخزين المؤقت.
حدد علامة التبويب خيارات متقدمة أو حدد التالي: خيارات متقدمة.
في الجزء Advanced ، تحقق من أسلوب مصادقة أو حدده استنادا إلى المعلومات التالية:
- بشكل افتراضي، بالنسبة إلى ذاكرة التخزين المؤقت الأساسية أو القياسية أو المتميزة الجديدة، يتم تمكين مصادقة Microsoft Entra وتعطيل مصادقة مفاتيح الوصول.
- بالنسبة لذاكرة التخزين المؤقت الأساسية أو القياسية، يمكنك اختيار التحديد لمنفذ غير TLS.
- بالنسبة لذاكرة التخزين المؤقت القياسية والمميزة، يمكنك اختيار تمكين مناطق التوفر. لا يمكنك تعطيل مناطق التوفر بعد إنشاء ذاكرة التخزين المؤقت.
- بالنسبة لذاكرة التخزين المؤقت Premium، قم بتكوين الإعدادات لمنفذ غير TLS والتكتلة والهوية المدارة واستمرارية البيانات.
هام
للحصول على الأمان الأمثل، نوصي باستخدام معرف Microsoft Entra مع الهويات المدارة لتخويل الطلبات مقابل ذاكرة التخزين المؤقت إذا أمكن. يوفر التخويل باستخدام معرف Microsoft Entra والهويات المدارة أمانا فائقا وسهولة استخدام عبر تخويل مفتاح الوصول المشترك. لمزيد من المعلومات حول استخدام الهويات المدارة مع ذاكرة التخزين المؤقت، راجع استخدام معرف Microsoft Entra لمصادقة ذاكرة التخزين المؤقت.
(اختياري) حدد علامة التبويب Tags أو حدد Next: Tags.
(اختياري) في علامة التبويب Tags ، أدخل اسم علامة وقيمة إذا كنت تريد تصنيف مورد ذاكرة التخزين المؤقت.
انقر فوق زر مراجعة + إنشاء.
في علامة التبويب Review + create ، يتحقق Azure تلقائيا من صحة التكوين الخاص بك.
بعد ظهور رسالة Validation passed الخضراء، حدد Create.
يحدث نشر ذاكرة التخزين المؤقت الجديدة على مدى عدة دقائق. يمكنك مراقبة تقدم النشر في جزء Azure Cache for Redis Overview. عندما تعرض الحالة قيد التشغيل، تكون ذاكرة التخزين المؤقت جاهزة للاستخدام.
تثبيت مكتبة عميل node-redis
مكتبة node-redis هي عميل Node.js الأساسي ل Redis. يمكنك تثبيت العميل باستخدام npm والأمر التالي:
npm install redis
إنشاء تطبيق Node.js للوصول إلى ذاكرة التخزين المؤقت
إنشاء تطبيق Node.js يستخدم إما معرف Microsoft Entra أو مفاتيح الوصول للاتصال بذاكرة التخزين المؤقت Azure ل Redis. نوصي باستخدام معرف Microsoft Entra.
تمكين مصادقة معرف Microsoft Entra على ذاكرة التخزين المؤقت
بالنسبة إلى ذاكرة التخزين المؤقت الموجودة، تحقق أولا لمعرفة ما إذا كانت مصادقة Microsoft Entra ممكنة. إذا لم يكن الأمر كذلك، فأكمل الخطوات التالية لتمكين مصادقة Microsoft Entra. نوصي باستخدام معرف Microsoft Entra للمصادقة في تطبيقاتك.
في مدخل Microsoft Azure، حدد Azure Cache لمثيل Redis حيث تريد استخدام المصادقة المستندة إلى الرمز المميز ل Microsoft Entra.
في قائمة الخدمة، ضمن Settings، حدد Authentication.
في جزء المصادقة ، تحقق لمعرفة ما إذا كانت خانة الاختيار تمكين مصادقة Microsoft Entra محددة. إذا كان الأمر كذلك، يمكنك الانتقال إلى القسم التالي.
بخلاف ذلك، حدد خانة الاختيار Enable Microsoft Entra Authentication . ثم أدخل اسم مستخدم صالح. حدد حفظ. يتم تعيين اسم المستخدم الذي تدخله تلقائيا إلى نهج الوصول إلى مالك البيانات.
يمكنك أيضا إدخال هوية مدارة أو كيان خدمة للاتصال بذاكرة التخزين المؤقت.
في مربع الحوار، يتم سؤالك عما إذا كنت تريد تحديث التكوين الخاص بك، ويتم إعلامك بأن إجراء التحديث يستغرق عدة دقائق حتى ينتهي. حدد نعم.
هام
عند الانتهاء من عملية التمكين، يتم إعادة تشغيل العقد في ذاكرة التخزين المؤقت لتحميل التكوين الجديد. نوصي بإكمال هذه العملية أثناء نافذة الصيانة القياسية أو خارج ساعات العمل القصوى. قد تستغرق العملية ما يصل إلى 30 دقيقة.
للحصول على معلومات حول استخدام معرف Microsoft Entra مع Azure CLI، راجع صفحات مرجع الهوية.
تثبيت مكتبة عميل Azure Identity ل JavaScript
تستخدم مكتبة عميل Azure Identity ل JavaScript مكتبة مصادقة Microsoft (MSAL) المطلوبة لتوفير دعم مصادقة الرمز المميز. تثبيت المكتبة باستخدام npm:
npm install @azure/identity
إنشاء تطبيق Node.js باستخدام معرف Microsoft Entra
أضف متغيرات البيئة لاسم المضيف ومعرف كيان الخدمة.
معرف كيان الخدمة هو معرف الكائن الخاص بك لمدير خدمة Microsoft Entra ID أو المستخدم. في مدخل Microsoft Azure، تظهر هذه القيمة باسم المستخدم.
set AZURE_CACHE_FOR_REDIS_HOST_NAME=contosoCache set REDIS_SERVICE_PRINCIPAL_ID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
إنشاء ملف برنامج نصي يسمى redistest.js.
أضف رمز JavaScript المثال التالي إلى الملف. توضح لك هذه التعليمة البرمجية كيفية الاتصال بمثيل Azure Cache for Redis باستخدام اسم مضيف ذاكرة التخزين المؤقت ومتغيرات البيئة الرئيسية. كما تقوم التعليمات البرمجية بتخزين قيمة سلسلة واستردادها في ذاكرة التخزين المؤقت. أوامر
PING
وCLIENT LIST
تنفذ أيضًا. لمزيد من الأمثلة على استخدام Redis مع عميل node-redis ، راجع Node-Redis.const { createClient } = require("redis"); const { DefaultAzureCredential } = require("@azure/identity"); async function main() { // Construct a Token Credential from Identity library, e.g. ClientSecretCredential / ClientCertificateCredential / ManagedIdentityCredential, etc. const credential = new DefaultAzureCredential(); const redisScope = "https://redis.azure.com/.default"; // Fetch a Microsoft Entra token to be used for authentication. This token will be used as the password. let accessToken = await credential.getToken(redisScope); console.log("access Token", accessToken); // Create redis client and connect to the Azure Cache for Redis over the TLS port using the access token as password. const cacheConnection = createClient({ username: process.env.REDIS_SERVICE_PRINCIPAL_ID, password: accessToken.token, url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`, pingInterval: 100000, socket: { tls: true, keepAlive: 0 }, }); cacheConnection.on("error", (err) => console.log("Redis Client Error", err)); await cacheConnection.connect(); // PING command console.log("\nCache command: PING"); console.log("Cache response : " + await cacheConnection.ping()); // SET console.log("\nCache command: SET Message"); console.log("Cache response : " + await cacheConnection.set("Message", "Hello! The cache is working from Node.js!")); // GET console.log("\nCache command: GET Message"); console.log("Cache response : " + await cacheConnection.get("Message")); // Client list, useful to see if connection list is growing... console.log("\nCache command: CLIENT LIST"); console.log("Cache response : " + await cacheConnection.sendCommand(["CLIENT", "LIST"])); cacheConnection.disconnect(); return "Done" } main().then((result) => console.log(result)).catch(ex => console.log(ex));
تشغيل البرنامج النصي باستخدام Node.js:
node redistest.js
تحقق من أن إخراج التعليمات البرمجية الخاصة بك يبدو مثل هذا المثال:
Cache command: PING Cache response : PONG Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: SET Message Cache response : OK Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: CLIENT LIST Cache response : id=10017364 addr=76.22.73.183:59380 fd=221 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 ow=0 owmem=0 events=r cmd=client user=default numops=6 Done
إنشاء نموذج تطبيق JavaScript يحتوي على إعادة المصادقة
الرموز المميزة للوصول إلى معرف Microsoft Entra لها عمر محدود يبلغ حوالي 75 دقيقة. للحفاظ على اتصال بذاكرة التخزين المؤقت، يجب تحديث الرمز المميز.
يوضح هذا المثال كيفية تحديث الرمز المميز باستخدام JavaScript:
إنشاء ملف برنامج نصي يسمى redistestreauth.js.
أضف المثال التالي JavaScript إلى الملف:
const { createClient } = require("redis"); const { DefaultAzureCredential } = require("@azure/identity"); async function returnPassword(credential) { const redisScope = "https://redis.azure.com/.default"; // Fetch a Microsoft Entra token to be used for authentication. This token will be used as the password. return credential.getToken(redisScope); } async function main() { // Construct a Token Credential from Identity library, e.g. ClientSecretCredential / ClientCertificateCredential / ManagedIdentityCredential, etc. const credential = new DefaultAzureCredential(); let accessToken = await returnPassword(credential); // Create redis client and connect to the Azure Cache for Redis over the TLS port using the access token as password. let cacheConnection = createClient({ username: process.env.REDIS_SERVICE_PRINCIPAL_ID, password: accessToken.token, url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`, pingInterval: 100000, socket: { tls: true, keepAlive: 0 }, }); cacheConnection.on("error", (err) => console.log("Redis Client Error", err)); await cacheConnection.connect(); for (let i = 0; i < 3; i++) { try { // PING command console.log("\nCache command: PING"); console.log("Cache response : " + await cacheConnection.ping()); // SET console.log("\nCache command: SET Message"); console.log("Cache response : " + await cacheConnection.set("Message", "Hello! The cache is working from Node.js!")); // GET console.log("\nCache command: GET Message"); console.log("Cache response : " + await cacheConnection.get("Message")); // Client list, useful to see if connection list is growing... console.log("\nCache command: CLIENT LIST"); console.log("Cache response : " + await cacheConnection.sendCommand(["CLIENT", "LIST"])); break; } catch (e) { console.log("error during redis get", e.toString()); if ((accessToken.expiresOnTimestamp <= Date.now())|| (redis.status === "end" || "close") ) { await redis.disconnect(); accessToken = await returnPassword(credential); cacheConnection = createClient({ username: process.env.REDIS_SERVICE_PRINCIPAL_ID, password: accessToken.token, url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`, pingInterval: 100000, socket: { tls: true, keepAlive: 0 }, }); } } } } main().then((result) => console.log(result)).catch(ex => console.log(ex));
تشغيل البرنامج النصي باستخدام Node.js:
node redistestreauth.js
تحقق من الإخراج الذي يبدو مشابها لهذا المثال:
Cache command: PING Cache response : PONG Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: SET Message Cache response : OK Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: CLIENT LIST Cache response : id=10017364 addr=76.22.73.183:59380 fd=221 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 ow=0 owmem=0 events=r cmd=client user=default numops=6
إشعار
لمزيد من الأمثلة حول كيفية استخدام معرف Microsoft Entra للمصادقة على Redis عبر مكتبة node-redis، راجع مستودع node-redis GitHub.
تنظيف الموارد
إذا كنت تريد الاستمرار في استخدام الموارد التي قمت بإنشائها في هذه المقالة، فاحتفظ بمجموعة الموارد.
وإلا، لتجنب الرسوم المتعلقة بالموارد، إذا انتهيت من استخدام الموارد، يمكنك حذف مجموعة موارد Azure التي قمت بإنشائها.
تحذير
حذف مجموعة الموارد لا يمكن التراجع عنه. عند حذف مجموعة موارد، يتم حذف كافة الموارد في مجموعة الموارد نهائيا. تأكد من عدم حذف مجموعة الموارد الخاطئة أو الموارد غير الصحيحة بطريق الخطأ. إذا قمت بإنشاء الموارد داخل مجموعة موارد موجودة تحتوي على موارد تريد الاحتفاظ بها، يمكنك حذف كل مورد على حدة بدلا من حذف مجموعة الموارد.
حذف مجموعة موارد
سجل الدخول إلى مدخل Azure، وحدد "Resource groups".
حدد مجموعة الموارد المراد حذفها.
إذا كان هناك العديد من مجموعات الموارد، في تصفية لأي حقل، أدخل اسم مجموعة الموارد التي قمت بإنشائها لإكمال هذه المقالة. في قائمة نتائج البحث، حدد مجموعة الموارد.
حدد Delete resource group.
في جزء حذف مجموعة موارد، أدخل اسم مجموعة الموارد للتأكيد، ثم حدد حذف.
في غضون لحظات قليلة، يتم حذف مجموعة الموارد وجميع مواردها.
الحصول على التعليمات البرمجية للعينة
احصل على نموذج التشغيل السريع Node.js على GitHub.