Freigeben über


Azure Cache für Redis-Eingabebindung für Azure Functions

Wenn eine Funktion ausgeführt wird, ruft der Azure Cache für Redis-Eingabebindung Daten aus einem Cache ab und übergibt sie als Eingabeparameter an Ihre Funktion.

Informationen zu Setup- und Konfigurationsdetails finden Sie in der Übersicht.

Verfügbarkeitsbereich für Funktionsbindungen

Bindungstyp Azure Managed Redis Azure Cache for Redis
Eingabe Ja Ja

Wichtig

Wenn Sie Azure Managed Redis oder die Enterprise-Ebenen von Azure Cache für Redis verwenden, verwenden Sie Port 10000 anstelle von Port 6380 oder 6379.

Wichtig

Das Node.js v4-Modell für Funktionen wird von der Azure Cache for Redis-Erweiterung noch nicht unterstützt. Weitere Informationen zur Funktionsweise des v4-Modells finden Sie im Azure Functions Node.js-Entwicklerhandbuch. Weitere Informationen zu den Unterschieden zwischen v3 und v4 finden Sie im Migrationshandbuch.

Wichtig

Das Python v2-Modell für Funktionen wird von der Azure Cache for Redis-Erweiterung noch nicht unterstützt. Weitere Informationen zur Funktionsweise des v2-Modells finden Sie im Azure Functions Python-Entwicklerhandbuch.

Beispiel

Eine C#-Funktion kann mit einem der folgenden C#-Modi erstellt werden:

  • Isoliertes Workermodell: Kompilierte C#-Funktion, die in einem Workerprozess ausgeführt wird, der von der Runtime isoliert ist. Ein isolierter Workerprozess ist erforderlich, um C#-Funktionen zu unterstützen, die in LTS- und Nicht-LTS-Versionen von .NET und .NET Framework ausgeführt werden. Erweiterungen für isolierte Workerprozessfunktionen verwenden Microsoft.Azure.Functions.Worker.Extensions.*-Namespaces.
  • In-Process-Modell: Kompilierte C#-Funktion, die im gleichen Prozess wie die Functions-Runtime ausgeführt wird. In einer Variante dieses Modells kann Functions mithilfe von C#-Skripts ausgeführt werden. Dies wird hauptsächlich für die Bearbeitung im C#-Portal unterstützt. Erweiterungen für In-Process-Funktionen verwenden Microsoft.Azure.WebJobs.Extensions.*-Namespaces.

Wichtig

Für .NET-Funktionen wird die Verwendung des isolierten Workermodells gegenüber dem In-Process-Modell empfohlen. Einen Vergleich der In-Process - und isolierten Workermodelle finden Sie unter den Unterschieden zwischen dem isolierten Workermodell und dem Prozessmodell für .NET in Azure Functions.

Der folgende Code verwendet den Schlüssel aus dem pub/sub-Trigger, um den Wert aus einer Eingabebindung mithilfe eines GET Befehls abzurufen und zu protokollieren:

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

Weitere Beispiele für die Eingabebindung von Azure Cache für Redis sind im GitHub-Repository verfügbar.

Der folgende Code verwendet den Schlüssel aus dem pub/sub-Trigger, um den Wert aus einer Eingabebindung mithilfe eines GET Befehls abzurufen und zu protokollieren:

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

Diese function.json definiert sowohl einen Pub/Sub-Trigger als auch eine Eingabebindung an die GET-Nachricht in einem Azure Cache für Redis-Instanz:

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

Dieser JavaScript-Code (aus index.js) ruft den zwischengespeicherten Wert ab, der mit dem vom Pub/Sub-Trigger bereitgestellten Schlüssel verknüpft ist.


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

Diese function.json definiert sowohl einen Pub/Sub-Trigger als auch eine Eingabebindung an die GET-Nachricht in einem Azure Cache für Redis-Instanz:

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

Dieser PowerShell-Code (aus run.ps1) ruft den zwischengespeicherten Wert ab, der mit dem vom pub/sub-Trigger bereitgestellten Schlüssel verknüpft ist.

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

Im folgenden Beispiel wird ein pub/sub-Trigger mit einer Eingabebindung an die GET-Nachricht in einer Azure Cache für Redis-Instanz verwendet. Das Beispiel hängt davon ab, ob Sie das Python-Programmiermodell v1 oder v2 verwenden.

Diese function.json definiert sowohl einen Pub/Sub-Trigger als auch eine Eingabebindung an die GET-Nachricht in einem Azure Cache für Redis-Instanz:

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

Dieser Python-Code (aus __init__.py) ruft den zwischengespeicherten Wert ab, der mit dem vom pub/sub-Trigger bereitgestellten Schlüssel verknüpft ist:


import logging

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

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.

Attribute

Hinweis

Nicht alle Befehle werden für diese Bindung unterstützt. Derzeit werden nur Lesebefehle unterstützt, die eine einzelne Ausgabe zurückgeben. Die vollständige Liste finden Sie hier.

Attributeigenschaft Beschreibung
Connection Der Name der Anwendungseinstellung, die den Cache Verbindungszeichenfolge enthält, z. B.:<cacheName>.redis.cache.windows.net:6380,password...
Command Der Befehl "redis-cli", der im Cache ausgeführt werden soll, wobei alle Argumente durch Leerzeichen getrennt sind, z. B.: GET key, HGET key field.

Anmerkungen

Die RedisInput Anmerkung unterstützt diese Eigenschaften:

Eigenschaft Beschreibung
name Der Name der spezifischen Eingabebindung.
connection Der Name der Anwendungseinstellung, die den Cache Verbindungszeichenfolge enthält, z. B.:<cacheName>.redis.cache.windows.net:6380,password...
command Der Befehl "redis-cli", der im Cache ausgeführt werden soll, wobei alle Argumente durch Leerzeichen getrennt sind, z. B.: GET key oder HGET key field.

Konfiguration

Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.

function.json-Eigenschaft Beschreibung
connection Der Name der Anwendungseinstellung, die den Cache Verbindungszeichenfolge enthält, z. B.:<cacheName>.redis.cache.windows.net:6380,password...
command Der Befehl "redis-cli", der im Cache ausgeführt werden soll, wobei alle Argumente durch Leerzeichen getrennt sind, z. B.: GET key, HGET key field.

Hinweis

Python v2 und Node.js v4 für Funktionen verwenden nicht function.json zum Definieren der Funktion. Beide neuen Sprachversionen werden derzeit nicht von Azure Redis Cache-Bindungen unterstützt.

Vollständige Beispiele finden Sie im Abschnitt Beispiele.

Verbrauch

Die Eingabebindung erwartet, dass eine Zeichenfolge aus dem Cache empfangen wird.

Wenn Sie einen benutzerdefinierten Typ als Bindungsparameter verwenden, versucht die Erweiterung, eine JSON-formatierte Zeichenfolge in den benutzerdefinierten Typ dieses Parameters zu deserialisieren.