Azure Cache for Redis-utdatabindning för Azure Functions
Med Azure Cache for Redis-utdatabindningarna kan du ändra nycklarna i en cache baserat på en uppsättning tillgängliga utlösare i cacheminnet.
Information om konfiguration och konfigurationsinformation finns i översikten.
Exempel
En C#-funktion kan skapas med något av följande C#-lägen:
- Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework. Tillägg för isolerade arbetsprocessfunktioner använder
Microsoft.Azure.Functions.Worker.Extensions.*
namnområden. - Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen. I en variant av den här modellen kan Functions köras med C#-skript, vilket främst stöds för redigering av C#-portalen. Tillägg för in-process-funktioner använder
Microsoft.Azure.WebJobs.Extensions.*
namnområden.
I följande exempel visas en pub/sub-utlösare för den angivna händelsen med en utdatabindning till samma Redis-instans. Set-händelsen utlöser cachen och utdatabindningen returnerar ett borttagningskommando för nyckeln som utlöste funktionen.
Viktigt!
För .NET-funktioner rekommenderas användning av den isolerade arbetsmodellen över den pågående modellen. En jämförelse av de processbaserade och isolerade arbetsmodellerna finns i skillnader mellan den isolerade arbetsmodellen och den processbaserade modellen för .NET på 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 };
}
}
}
I följande exempel visas en pub/sub-utlösare för den angivna händelsen med en utdatabindning till samma Redis-instans. Set-händelsen utlöser cachen och utdatabindningen returnerar ett borttagningskommando för nyckeln som utlöste funktionen.
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;
}
}
Det här exemplet visar en pub/sub-utlösare för den angivna händelsen med en utdatabindning till samma Redis-instans. Set-händelsen utlöser cachen och utdatabindningen returnerar ett borttagningskommando för nyckeln som utlöste funktionen.
Bindningarna definieras i den här filen "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"
}
Den här koden från index.js
filen tar nyckeln från utlösaren och returnerar den till utdatabindningen för att ta bort det cachelagrade objektet.
module.exports = async function (context, key) {
context.log("Deleting recently SET key '" + key + "'");
return key;
}
Det här exemplet visar en pub/sub-utlösare för den angivna händelsen med en utdatabindning till samma Redis-instans. Set-händelsen utlöser cachen och utdatabindningen returnerar ett borttagningskommando för nyckeln som utlöste funktionen.
Bindningarna definieras i den här function.json
filen:
{
"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"
}
Den här koden från run.ps1
filen tar nyckeln från utlösaren och skickar den till utdatabindningen för att ta bort det cachelagrade objektet.
param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key
Det här exemplet visar en pub/sub-utlösare för den angivna händelsen med en utdatabindning till samma Redis-instans. Set-händelsen utlöser cachen och utdatabindningen returnerar ett borttagningskommando för nyckeln som utlöste funktionen.
Bindningarna definieras i den här function.json
filen:
{
"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"
}
Den här koden från __init__.py
filen tar nyckeln från utlösaren och skickar den till utdatabindningen för att ta bort det cachelagrade objektet.
import logging
def main(key: str) -> str:
logging.info("Deleting recently SET key '" + key + "'")
return key
Attribut
Kommentar
Alla kommandon stöds för den här bindningen.
Hur du definierar en utdatabindningsparameter beror på om C#-funktionerna körs i processen eller i en isolerad arbetsprocess.
Utdatabindningen definieras på följande sätt:
Definition | Exempel | beskrivning |
---|---|---|
På en out parameter |
[Redis(<Connection>, <Command>)] out string <Return_Variable> |
Strängvariabeln som returneras av metoden är ett nyckelvärde som bindningen använder för att köra kommandot mot den specifika cachen. |
I det här fallet är den typ som returneras av metoden ett nyckelvärde som bindningen använder för att köra kommandot mot den specifika cachen.
När funktionen har flera utdatabindningar kan du i stället använda bindningsattributet för egenskapen för en typ som är ett nyckelvärde, som bindningen använder för att köra kommandot mot den specifika cachen. Mer information finns i Flera utdatabindningar.
Oavsett C#-processläget stöds samma egenskaper av utdatabindningsattributet:
Kommentarer
Kommentaren RedisOutput
stöder följande egenskaper:
Konfiguration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .
Se avsnittet Exempel för fullständiga exempel.
Användning
Utdata returnerar en sträng, som är nyckeln för cacheposten som använder det specifika kommandot.
Det finns tre typer av anslutningar som tillåts från en Azure Functions-instans till en Redis Cache i dina distributioner. För lokal utveckling kan du också använda tjänstens huvudnamnshemligheter. appsettings
Använd för att konfigurera var och en av följande typer av klientautentisering, förutsatt att har Connection
angetts till Redis
i funktionen.