Udostępnij za pośrednictwem


Powiązanie wejściowe usługi Azure Cache for Redis dla usługi Azure Functions

Po uruchomieniu funkcji powiązanie wejściowe usługi Azure Cache for Redis pobiera dane z pamięci podręcznej i przekazuje je do funkcji jako parametr wejściowy.

Aby uzyskać informacje na temat konfiguracji i konfiguracji, zobacz omówienie.

Zakres dostępności powiązań funkcji

Typ powiązania Azure Managed Redis Azure Cache for Redis
Dane wejściowe Tak Tak

Ważne

W przypadku korzystania z usługi Azure Managed Redis lub warstw Enterprise usługi Azure Cache for Redis użyj portu 10000, a nie portu 6380 lub 6379.

Ważne

Model Node.js w wersji 4 dla usługi Functions nie jest jeszcze obsługiwany przez rozszerzenie usługi Azure Cache for Redis. Aby uzyskać więcej informacji na temat sposobu działania modelu w wersji 4, zapoznaj się z przewodnikiem dewelopera dotyczącym usługi Azure Functions Node.js. Aby dowiedzieć się więcej o różnicach między wersjami 3 i v4, zapoznaj się z przewodnikiem migracji.

Ważne

Model języka Python w wersji 2 dla usługi Functions nie jest jeszcze obsługiwany przez rozszerzenie usługi Azure Cache for Redis. Aby uzyskać więcej informacji na temat sposobu działania modelu w wersji 2, zapoznaj się z przewodnikiem dla deweloperów języka Python usługi Azure Functions.

Przykład

Funkcję języka C# można utworzyć przy użyciu jednego z następujących trybów języka C#:

  • Model izolowanego procesu roboczego: skompilowana funkcja języka C#, która jest uruchamiana w procesie roboczym izolowanym od środowiska uruchomieniowego. Proces izolowanego procesu roboczego jest wymagany do obsługi funkcji języka C# uruchomionych w wersjach LTS i innych niż LTS platformy .NET oraz programu .NET Framework. Rozszerzenia dla izolowanych funkcji procesu roboczego używają Microsoft.Azure.Functions.Worker.Extensions.* przestrzeni nazw.
  • Model przetwarzania: skompilowana funkcja języka C#, która działa w tym samym procesie co środowisko uruchomieniowe usługi Functions. W odmianie tego modelu funkcje można uruchamiać przy użyciu skryptów języka C#, które są obsługiwane głównie w przypadku edytowania portalu języka C#. Rozszerzenia dla funkcji przetwarzania używają Microsoft.Azure.WebJobs.Extensions.* przestrzeni nazw.

Ważne

W przypadku funkcji platformy .NET używanie izolowanego modelu procesu roboczego jest zalecane w modelu w procesie. Aby zapoznać się z porównaniem modeli procesów procesowych i izolowanych procesów roboczych, zobacz różnice między izolowanym modelem procesu roboczego a modelem procesu dla platformy .NET w usłudze Azure Functions.

Poniższy kod używa klucza z wyzwalacza pub/sub, aby uzyskać i zarejestrować wartość z powiązania wejściowego GET przy użyciu polecenia :

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}'");
        }
    }
}

Więcej przykładów dla powiązania wejściowego usługi Azure Cache for Redis jest dostępnych w repozytorium GitHub.

Poniższy kod używa klucza z wyzwalacza pub/sub, aby uzyskać i zarejestrować wartość z powiązania wejściowego GET przy użyciu polecenia :

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 + "'");
    }
}

Ten function.json definiuje zarówno wyzwalacz pub/sub, jak i powiązanie wejściowe z komunikatem GET w wystąpieniu usługi Azure Cache for 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"
}

Ten kod JavaScript (z index.js) pobiera i rejestruje buforowane wartości powiązane z kluczem dostarczonym przez wyzwalacz pub/sub.


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

Ten function.json definiuje zarówno wyzwalacz pub/sub, jak i powiązanie wejściowe z komunikatem GET w wystąpieniu usługi Azure Cache for 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"
}

Ten kod programu PowerShell (z pliku run.ps1) pobiera i rejestruje buforowane wartości powiązane z kluczem dostarczonym przez wyzwalacz pub/sub.

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

W poniższym przykładzie użyto wyzwalacza pub/sub z powiązaniem wejściowym do komunikatu GET w wystąpieniu usługi Azure Cache for Redis. Przykład zależy od tego, czy używasz modelu programowania w wersji 1, czy w wersji 2 języka Python.

Ten function.json definiuje zarówno wyzwalacz pub/sub, jak i powiązanie wejściowe z komunikatem GET w wystąpieniu usługi Azure Cache for 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"
        }
    ]
}

Ten kod języka Python (z __init__.py) pobiera i rejestruje buforowane wartości powiązane z kluczem dostarczonym przez wyzwalacz pub/sub:


import logging

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

W sekcji konfiguracji opisano te właściwości.

Atrybuty

Uwaga

Nie wszystkie polecenia są obsługiwane dla tego powiązania. Obecnie obsługiwane są tylko polecenia odczytu, które zwracają pojedyncze dane wyjściowe. Pełną listę można znaleźć tutaj

Właściwość atrybutu opis
Connection Nazwa ustawienia aplikacji, które zawiera parametry połączenia pamięci podręcznej, takie jak:<cacheName>.redis.cache.windows.net:6380,password...
Command Polecenie redis-cli do wykonania w pamięci podręcznej ze wszystkimi argumentami oddzielonymi spacjami, takimi jak : GET key, HGET key field.

Adnotacje

Adnotacja RedisInput obsługuje następujące właściwości:

Właściwości opis
name Nazwa określonego powiązania wejściowego.
connection Nazwa ustawienia aplikacji, które zawiera parametry połączenia pamięci podręcznej, takie jak:<cacheName>.redis.cache.windows.net:6380,password...
command Polecenie redis-cli do wykonania w pamięci podręcznej ze wszystkimi argumentami oddzielonymi spacjami, takimi jak: GET key lub HGET key field.

Konfigurowanie

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json.

właściwość function.json opis
connection Nazwa ustawienia aplikacji, które zawiera parametry połączenia pamięci podręcznej, takie jak:<cacheName>.redis.cache.windows.net:6380,password...
command Polecenie redis-cli do wykonania w pamięci podręcznej ze wszystkimi argumentami oddzielonymi spacjami, takimi jak : GET key, HGET key field.

Uwaga

Język Python w wersji 2 i Node.js w wersji 4 dla usługi Functions nie używają function.json do definiowania funkcji. Obie te nowe wersje językowe nie są obecnie obsługiwane przez powiązania usługi Azure Redis Cache.

Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.

Użycie

Powiązanie wejściowe oczekuje otrzymania ciągu z pamięci podręcznej.

Jeśli używasz niestandardowego typu jako parametru powiązania, rozszerzenie próbuje deserializować ciąg sformatowany w formacie JSON do niestandardowego typu tego parametru.