Udostępnij za pośrednictwem


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

Powiązania wyjściowe usługi Azure Cache for Redis umożliwiają zmianę kluczy w pamięci podręcznej na podstawie zestawu dostępnego wyzwalacza w pamięci podręcznej.

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

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.

W poniższym przykładzie pokazano wyzwalacz pub/sub dla zdarzenia zestawu z powiązaniem wyjściowym z tym samym wystąpieniem usługi Redis. Zdarzenie set wyzwala pamięć podręczną, a powiązanie wyjściowe zwraca polecenie usuwania dla klucza, który wyzwolił funkcję.

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.


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 };
        }
    }
}

W poniższym przykładzie pokazano wyzwalacz pub/sub dla zdarzenia zestawu z powiązaniem wyjściowym z tym samym wystąpieniem usługi Redis. Zdarzenie set wyzwala pamięć podręczną, a powiązanie wyjściowe zwraca polecenie usuwania dla klucza, który wyzwolił funkcję.

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;
    }
}

W tym przykładzie pokazano wyzwalacz pub/sub dla zdarzenia zestawu z powiązaniem wyjściowym z tym samym wystąpieniem usługi Redis. Zdarzenie set wyzwala pamięć podręczną, a powiązanie wyjściowe zwraca polecenie usuwania dla klucza, który wyzwolił funkcję.

Powiązania są zdefiniowane w tym pliku "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"
}

Ten kod z index.js pliku pobiera klucz z wyzwalacza i zwraca go do powiązania wyjściowego w celu usunięcia buforowanego elementu.

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

W tym przykładzie pokazano wyzwalacz pub/sub dla zdarzenia zestawu z powiązaniem wyjściowym z tym samym wystąpieniem usługi Redis. Zdarzenie set wyzwala pamięć podręczną, a powiązanie wyjściowe zwraca polecenie usuwania dla klucza, który wyzwolił funkcję.

Powiązania są zdefiniowane w tym function.json pliku:

{
    "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"
}

Ten kod z run.ps1 pliku pobiera klucz z wyzwalacza i przekazuje go do powiązania wyjściowego w celu usunięcia buforowanego elementu.

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

W tym przykładzie pokazano wyzwalacz pub/sub dla zdarzenia zestawu z powiązaniem wyjściowym z tym samym wystąpieniem usługi Redis. Zdarzenie set wyzwala pamięć podręczną, a powiązanie wyjściowe zwraca polecenie usuwania dla klucza, który wyzwolił funkcję.

Powiązania są zdefiniowane w tym function.json pliku:

{
    "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"
}

Ten kod z __init__.py pliku pobiera klucz z wyzwalacza i przekazuje go do powiązania wyjściowego w celu usunięcia buforowanego elementu.

import logging

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

Atrybuty

Uwaga

Wszystkie polecenia są obsługiwane dla tego powiązania.

Sposób definiowania parametru powiązania wyjściowego zależy od tego, czy funkcje języka C# są uruchamiane w procesie przetwarzania, czy w izolowanym procesie roboczym.

Powiązanie wyjściowe jest definiowane w następujący sposób:

Definicja Przykład opis
W parametrze out [Redis(<Connection>, <Command>)] out string <Return_Variable> Zmienna ciągu zwracana przez metodę jest wartością klucza używaną przez powiązanie do wykonania polecenia względem określonej pamięci podręcznej.

W takim przypadku typ zwracany przez metodę jest wartością klucza używaną przez powiązanie do wykonania polecenia względem określonej pamięci podręcznej.

Jeśli funkcja ma wiele powiązań wyjściowych, można zamiast tego zastosować atrybut powiązania do właściwości typu, który jest wartością klucza, której powiązanie używa do wykonania polecenia względem określonej pamięci podręcznej. Aby uzyskać więcej informacji, zobacz Wiele powiązań wyjściowych.


Niezależnie od trybu procesu języka C# te same właściwości są obsługiwane przez atrybut powiązania wyjściowego:

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, takie jak: DEL.

Adnotacje

Adnotacja RedisOutput 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, takie jak: DEL.

Konfigurowanie

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

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, takie jak: DEL.

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

Użycie

Dane wyjściowe zwracają ciąg, który jest kluczem wpisu pamięci podręcznej, na którym zastosowano określone polecenie.

Istnieją trzy typy połączeń, które są dozwolone z wystąpienia usługi Azure Functions do pamięci podręcznej Redis Cache we wdrożeniach. W przypadku programowania lokalnego można również używać wpisów tajnych jednostki usługi. Użyj polecenia appsettings , aby skonfigurować każdy z następujących typów uwierzytelniania klienta, przy założeniu Connection , że parametr został ustawiony na Redis wartość w funkcji .