Azure Cache لربط إخراج Redis لوظائف Azure

تتيح لك روابط إخراج Azure Cache for Redis تغيير المفاتيح في ذاكرة التخزين المؤقت استنادا إلى مجموعة من المشغلات المتوفرة على ذاكرة التخزين المؤقت.

للحصول على معلومات حول تفاصيل الإعداد والتكوين، راجع الاستعراض العام.

هام

نموذج Node.js v4 للوظائف غير مدعوم حتى الآن من قبل ملحق Azure Cache for Redis. لمزيد من التفاصيل حول كيفية عمل نموذج v4، راجع دليل مطور Azure Functions Node.js. لمعرفة المزيد حول الاختلافات بين v3 وv4، راجع دليل الترحيل.

هام

نموذج Python v2 للوظائف غير مدعوم حتى الآن بواسطة ملحق Azure Cache for Redis. لمزيد من التفاصيل حول كيفية عمل نموذج v2، راجع دليل مطور Azure Functions Python.

مثال

يمكن إنشاء دالة C# باستخدام أحد أوضاع C# التالية:

  • نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. عملية العامل المعزولة مطلوبة لدعم وظائف C# التي تعمل على إصدارات LTS وغير LTS .NET و.NET Framework. تستخدم Microsoft.Azure.Functions.Worker.Extensions.* ملحقات دالات عملية العامل المعزولة مساحات الأسماء.
  • نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل الوظائف. في تباين هذا النموذج، يمكن تشغيل الدالات باستخدام البرمجة النصية C#، والتي يتم دعمها بشكل أساسي لتحرير مدخل C#. تستخدم Microsoft.Azure.WebJobs.Extensions.* ملحقات الوظائف قيد المعالجة مساحات الأسماء.

يظهر المثال التالي مشغل pub/sub على الحدث المحدد مع ربط إخراج لنفس مثيل Redis. يقوم حدث المجموعة بتشغيل ذاكرة التخزين المؤقت ويرجع ربط الإخراج أمر حذف للمفتاح الذي قام بتشغيل الدالة.

هام

بالنسبة لوظائف .NET، يوصى باستخدام نموذج العامل المعزول عبر النموذج قيد المعالجة. للمقارنة بين نماذج العامل قيد المعالجة والنموذج المعزول ، راجع الاختلافات بين نموذج العامل المعزول والنموذج قيد المعالجة ل .NET على Azure Functions.


using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisOutputBinding
{
    internal class SetDeleter
    {
        [Function(nameof(SetDeleter))]
        [RedisOutput(Common.connectionString, "DEL")]
        public static string Run(
            [RedisPubSubTrigger(Common.connectionString, "__keyevent@0__:set")] string key,
            ILogger logger)
        {
            logger.LogInformation($"Deleting recently SET key '{key}'");
            return key;
        }
    }
}
using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.WebJobs.Extensions.Redis.Samples.RedisOutputBinding
{
    internal class SetDeleter
    {
        [FunctionName(nameof(SetDeleter))]
        public static void Run(
            [RedisPubSubTrigger(Common.connectionStringSetting, "__keyevent@0__:set")] string key,
            [Redis(Common.connectionStringSetting, "DEL")] out string[] arguments,
            ILogger logger)
        {
            logger.LogInformation($"Deleting recently SET key '{key}'");
            arguments = new string[] { key };
        }
    }
}

يظهر المثال التالي مشغل pub/sub على الحدث المحدد مع ربط إخراج لنفس مثيل Redis. يقوم حدث المجموعة بتشغيل ذاكرة التخزين المؤقت ويرجع ربط الإخراج أمر حذف للمفتاح الذي قام بتشغيل الدالة.

package com.function.RedisOutputBinding;

import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;

public class SetDeleter {
    @FunctionName("SetDeleter")
    @RedisOutput(
                name = "value",
                connection = "redisConnectionString",
                command = "DEL")
    public String run(
            @RedisPubSubTrigger(
                name = "key",
                connection = "redisConnectionString",
                channel = "__keyevent@0__:set")
                String key,
            final ExecutionContext context) {
        context.getLogger().info("Deleting recently SET key '" + key + "'");
        return key;
    }
}

يظهر هذا المثال مشغل pub/sub على الحدث المحدد مع ربط إخراج لنفس مثيل Redis. يقوم حدث المجموعة بتشغيل ذاكرة التخزين المؤقت ويرجع ربط الإخراج أمر حذف للمفتاح الذي قام بتشغيل الدالة.

يتم تعريف الارتباطات في ملف "function.json" هذا:

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "DEL",
            "name": "$return",
            "direction": "out"
        }
    ],
    "scriptFile": "index.js"
}

تأخذ هذه التعليمة البرمجية index.js من الملف المفتاح من المشغل وتعيده إلى ربط الإخراج لحذف العنصر المخزن مؤقتا.

module.exports = async function (context, key) {
    context.log("Deleting recently SET key '" + key + "'");
    return key;
}

يظهر هذا المثال مشغل pub/sub على الحدث المحدد مع ربط إخراج لنفس مثيل Redis. يقوم حدث المجموعة بتشغيل ذاكرة التخزين المؤقت ويرجع ربط الإخراج أمر حذف للمفتاح الذي قام بتشغيل الدالة.

يتم تعريف الروابط في هذا function.json الملف:

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisLocalhost",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisLocalhost",
            "command": "DEL",
            "name": "retVal",
            "direction": "out"
        }
    ],
    "scriptFile": "run.ps1"
}

تأخذ هذه التعليمة البرمجية run.ps1 من الملف المفتاح من المشغل وتمريره إلى ربط الإخراج لحذف العنصر المخزن مؤقتا.

param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key

يظهر هذا المثال مشغل pub/sub على الحدث المحدد مع ربط إخراج لنفس مثيل Redis. يقوم حدث المجموعة بتشغيل ذاكرة التخزين المؤقت ويرجع ربط الإخراج أمر حذف للمفتاح الذي قام بتشغيل الدالة.

يتم تعريف الروابط في هذا function.json الملف:

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisLocalhost",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisLocalhost",
            "command": "DEL",
            "name": "$return",
            "direction": "out"
        }
    ],
    "scriptFile": "__init__.py"
}

تأخذ هذه التعليمة البرمجية __init__.py من الملف المفتاح من المشغل وتمريره إلى ربط الإخراج لحذف العنصر المخزن مؤقتا.

import logging

def main(key: str) -> str:
    logging.info("Deleting recently SET key '" + key + "'")
    return key

السمات

إشعار

يتم اعتماد كافة الأوامر لهذا الربط.

تعتمد الطريقة التي تحدد بها معلمة ربط الإخراج على ما إذا كانت وظائف C# الخاصة بك تعمل قيد المعالجة أو في عملية عامل معزولة.

يتم تعريف ربط الإخراج بهذه الطريقة:

التعريف مثال ‏‏الوصف
على معلمة out [Redis(<Connection>, <Command>)] out string <Return_Variable> متغير السلسلة الذي تم إرجاعه بواسطة الأسلوب هو قيمة رئيسية يستخدمها الربط لتنفيذ الأمر مقابل ذاكرة التخزين المؤقت المحددة.

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

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


بغض النظر عن وضع عملية C#، يتم دعم نفس الخصائص بواسطة سمة ربط الإخراج:

خاصية السمة ‏‏الوصف
Connection اسم إعداد التطبيق الذي يحتوي على سلسلة الاتصال ذاكرة التخزين المؤقت، مثل:<cacheName>.redis.cache.windows.net:6380,password...
Command الأمر redis-cli الذي سيتم تنفيذه على ذاكرة التخزين المؤقت، مثل: DEL.

تعليقات توضيحية

RedisOutput يدعم التعليق التوضيحي هذه الخصائص:

الخاصية ‏‏الوصف
name اسم ربط الإدخال المحدد.
connection اسم إعداد التطبيق الذي يحتوي على سلسلة الاتصال ذاكرة التخزين المؤقت، مثل:<cacheName>.redis.cache.windows.net:6380,password...
command الأمر redis-cli الذي سيتم تنفيذه على ذاكرة التخزين المؤقت، مثل: DEL.

التكوين

يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.

الخاصية ‏‏الوصف
name اسم ربط الإدخال المحدد.
connection اسم إعداد التطبيق الذي يحتوي على سلسلة الاتصال ذاكرة التخزين المؤقت، مثل:<cacheName>.redis.cache.windows.net:6380,password...
command الأمر redis-cli الذي سيتم تنفيذه على ذاكرة التخزين المؤقت، مثل: DEL.

راجع قسم Example للحصول على أمثلة كاملة.

الاستخدام

يقوم الإخراج بإرجاع سلسلة، وهو مفتاح إدخال ذاكرة التخزين المؤقت الذي يطبق عليه الأمر المحدد.

هناك ثلاثة أنواع من الاتصالات المسموح بها من مثيل Azure Functions إلى Redis Cache في عمليات النشر الخاصة بك. للتطوير المحلي، يمكنك أيضا استخدام البيانات السرية الأساسية للخدمة. appsettings استخدم لتكوين كل نوع من الأنواع التالية من مصادقة العميل، بافتراض Connection تعيين إلى Redis في الدالة .