Azure Cache für Redis-Ausgabebindung für Azure Functions
Mit dem Azure Cache für Redis-Ausgabebindungen können Sie die Schlüssel in einem Cache basierend auf einem Satz verfügbarer Trigger im Cache ändern.
Informationen zu Setup- und Konfigurationsdetails finden Sie in der Übersicht.
Verfügbarkeitsbereich für Funktionsbindungen
Bindungstyp | Azure Managed Redis | Azure Cache for Redis |
---|---|---|
Output | 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.
Das folgende Beispiel zeigt einen pub/sub-Trigger für das Set-Ereignis mit einer Ausgabebindung an dieselbe Redis-Instanz. Das Set-Ereignis löst den Cache aus, und die Ausgabebindung gibt einen Löschbefehl für den Schlüssel zurück, der die Funktion ausgelöst hat.
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.
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 };
}
}
}
Das folgende Beispiel zeigt einen pub/sub-Trigger für das Set-Ereignis mit einer Ausgabebindung an dieselbe Redis-Instanz. Das Set-Ereignis löst den Cache aus, und die Ausgabebindung gibt einen Löschbefehl für den Schlüssel zurück, der die Funktion ausgelöst hat.
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;
}
}
Dieses Beispiel zeigt einen Pub/Sub-Trigger für das Set-Ereignis mit einer Ausgabebindung an dieselbe Redis-Instanz. Das Set-Ereignis löst den Cache aus, und die Ausgabebindung gibt einen Löschbefehl für den Schlüssel zurück, der die Funktion ausgelöst hat.
Die Bindungen werden in der Datei "function.json" definiert:
{
"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"
}
Dieser Code aus der index.js
Datei übernimmt den Schlüssel vom Trigger und gibt ihn an die Ausgabebindung zurück, um das zwischengespeicherte Element zu löschen.
module.exports = async function (context, key) {
context.log("Deleting recently SET key '" + key + "'");
return key;
}
Dieses Beispiel zeigt einen Pub/Sub-Trigger für das Set-Ereignis mit einer Ausgabebindung an dieselbe Redis-Instanz. Das Set-Ereignis löst den Cache aus, und die Ausgabebindung gibt einen Löschbefehl für den Schlüssel zurück, der die Funktion ausgelöst hat.
Die Bindungen werden in dieser function.json
Datei definiert:
{
"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"
}
Dieser Code aus der run.ps1
Datei übernimmt den Schlüssel vom Trigger und übergibt ihn an die Ausgabebindung, um das zwischengespeicherte Element zu löschen.
param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key
Dieses Beispiel zeigt einen Pub/Sub-Trigger für das Set-Ereignis mit einer Ausgabebindung an dieselbe Redis-Instanz. Das Set-Ereignis löst den Cache aus, und die Ausgabebindung gibt einen Löschbefehl für den Schlüssel zurück, der die Funktion ausgelöst hat.
Die Bindungen werden in dieser function.json
Datei definiert:
{
"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"
}
Dieser Code aus der __init__.py
Datei übernimmt den Schlüssel vom Trigger und übergibt ihn an die Ausgabebindung, um das zwischengespeicherte Element zu löschen.
import logging
def main(key: str) -> str:
logging.info("Deleting recently SET key '" + key + "'")
return key
Attribute
Hinweis
Für diese Bindung werden alle Befehle unterstützt.
Die Art und Weise, in der Sie einen Ausgabebindungsparameter definieren, hängt davon ab, ob Ihre C#-Funktionen im Prozess oder in einem isolierten Arbeitsprozess ausgeführt werden.
Die Ausgabebindung wird auf diese Weise definiert:
Definition | Beispiel | Beschreibung |
---|---|---|
Für einen out Parameter |
[Redis(<Connection>, <Command>)] out string <Return_Variable> |
Die von der Methode zurückgegebene Zeichenfolgenvariable ist ein Schlüsselwert, den die Bindung zum Ausführen des Befehls für den jeweiligen Cache verwendet. |
In diesem Fall ist der von der Methode zurückgegebene Typ ein Schlüsselwert, den die Bindung zum Ausführen des Befehls für den jeweiligen Cache verwendet.
Wenn Ihre Funktion über mehrere Ausgabebindungen verfügt, können Sie stattdessen das Bindungsattribut auf die Eigenschaft eines Typs anwenden, der ein Schlüsselwert ist, mit dem die Bindung den Befehl für den jeweiligen Cache ausführt. Weitere Informationen finden Sie unter Mehrere Ausgabebindungen.
Unabhängig vom C#-Prozessmodus werden die gleichen Eigenschaften vom Ausgabebindungsattribut unterstützt:
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, z. B.: DEL . |
Anmerkungen
Die RedisOutput
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, z. B.: DEL . |
Konfiguration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.
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, z. B.: DEL . |
Vollständige Beispiele finden Sie im Abschnitt Beispiele.
Verbrauch
Die Ausgabe gibt eine Zeichenfolge zurück, bei der es sich um den Schlüssel des Cacheeintrags handelt, auf den der jeweilige Befehl angewendet wird.
Es gibt drei Arten von Verbindungen, die von einer Azure Functions-Instanz zu einem Redis-Cache in Ihren Bereitstellungen zulässig sind. Für die lokale Entwicklung können Sie auch Dienstprinzipalschlüssel verwenden. Verwenden Sie die appsettings
Folgenden Typen der Clientauthentifizierung, wobei davon ausgegangen wird, dass sie Connection
in der Funktion festgelegt Redis
wurde.