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.* ملحقات الوظائف قيد المعالجة مساحات الأسماء.

هام

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

تستخدم التعليمات البرمجية التالية المفتاح من مشغل pub/sub للحصول على القيمة وتسجيلها من ربط إدخال باستخدام أمر GET :

using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisInputBinding
{
    public class SetGetter
    {
        private readonly ILogger<SetGetter> logger;

        public SetGetter(ILogger<SetGetter> logger)
        {
            this.logger = logger;
        }

        [Function(nameof(SetGetter))]
        public void Run(
            [RedisPubSubTrigger(Common.connectionStringSetting, "__keyevent@0__:set")] string key,
            [RedisInput(Common.connectionStringSetting, "GET {Message}")] string value)
        {
            logger.LogInformation($"Key '{key}' was set to value '{value}'");
        }
    }
}

تتوفر المزيد من العينات لربط إدخال Azure Cache for Redis في مستودع GitHub.

تستخدم التعليمات البرمجية التالية المفتاح من مشغل pub/sub للحصول على القيمة وتسجيلها من ربط إدخال باستخدام أمر GET :

package com.function.RedisInputBinding;

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

public class SetGetter {
    @FunctionName("SetGetter")
    public void run(
            @RedisPubSubTrigger(
                name = "key",
                connection = "redisConnectionString",
                channel = "__keyevent@0__:set")
                String key,
            @RedisInput(
                name = "value",
                connection = "redisConnectionString",
                command = "GET {Message}")
                String value,
            final ExecutionContext context) {
            context.getLogger().info("Key '" + key + "' was set to value '" + value + "'");
    }
}

يعرف هذا function.json كلا من مشغل pub/sub وربط إدخال لرسالة GET على Azure Cache لمثيل Redis:

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

يعيد رمز JavaScript هذا (من index.js) المحاولة ويسجل القيمة المخزنة مؤقتا المتعلقة بالمفتاح الذي يوفره مشغل pub/sub.


module.exports = async function (context, key, value) {
    context.log("Key '" + key + "' was set to value '" + value + "'");
}

يعرف هذا function.json كلا من مشغل pub/sub وربط إدخال لرسالة GET على Azure Cache لمثيل Redis:

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ],
    "scriptFile": "run.ps1"
}

يقوم رمز PowerShell هذا (من run.ps1) باسترداد وتسجيل القيمة المخزنة مؤقتا المتعلقة بالمفتاح الذي يوفره مشغل pub/sub.

param($key, $value, $TriggerMetadata)
Write-Host "Key '$key' was set to value '$value'"

يستخدم المثال التالي مشغل pub/sub مع ربط إدخال لرسالة GET على Azure Cache لمثيل Redis. يعتمد المثال على ما إذا كنت تستخدم نموذج برمجة v1 أو v2 Python.

يعرف هذا function.json كلا من مشغل pub/sub وربط إدخال لرسالة GET على Azure Cache لمثيل Redis:

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ]
}

يعيد رمز Python هذا (من __init__.py) المحاولة ويسجل القيمة المخزنة مؤقتا المتعلقة بالمفتاح الذي يوفره مشغل pub/sub:


import logging

def main(key: str, value: str):
    logging.info("Key '" + key + "' was set to value '" + value + "'")

قسم التكوين يشرح هذه الخصائص.

السمات

إشعار

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

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

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

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

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

التكوين

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

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

إشعار

لا تستخدم Python v2 و Node.js v4 للوظائف function.json لتعريف الدالة. كلا إصداري اللغة الجديدين غير مدعومين حاليا من قبل روابط ذاكرة التخزين المؤقت Azure Redis.

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

الاستخدام

يتوقع ربط الإدخال تلقي سلسلة من ذاكرة التخزين المؤقت.

عند استخدام نوع مخصص كمعلمة ربط، يحاول الملحق إلغاء تسلسل سلسلة بتنسيق JSON في النوع المخصص لهذه المعلمة.