Výstupní vazba Azure Cache for Redis pro Azure Functions
Výstupní vazby Azure Cache for Redis umožňují změnit klíče v mezipaměti na základě sady dostupných aktivačních událostí v mezipaměti.
Informace o nastavení a konfiguraci najdete v přehledu.
Rozsah dostupnosti pro vazby funkcí
Typ vazby | Azure Managed Redis | Azure Cache for Redis |
---|---|---|
Výstup | Ano | Yes |
Důležité
Pokud používáte Azure Managed Redis nebo podnikové úrovně Azure Cache for Redis, použijte místo portu 6380 nebo 6379 port 10000.
Důležité
Rozšíření Azure Cache for Redis zatím nepodporuje model Pythonu v2 pro Functions. Další podrobnosti o tom, jak model v2 funguje, najdete v příručce pro vývojáře v Pythonu pro Azure Functions.
Příklad
Funkci jazyka C# je možné vytvořit pomocí jednoho z následujících režimů jazyka C#:
- Izolovaný model pracovního procesu: Kompilovaná funkce jazyka C#, která běží v pracovním procesu, který je izolovaný od modulu runtime. Izolovaný pracovní proces je nutný pro podporu funkcí C# spuštěných na LTS a jiných verzích než LTS .NET a rozhraní .NET Framework. Rozšíření pro izolované funkce pracovních procesů používají
Microsoft.Azure.Functions.Worker.Extensions.*
obory názvů. - Model v procesu: Zkompilovaná funkce jazyka C#, která běží ve stejném procesu jako modul runtime služby Functions. Ve variantě tohoto modelu je možné spouštět funkce pomocí skriptování jazyka C#, což je podporováno především pro úpravy portálu C#. Rozšíření pro procesní funkce používají
Microsoft.Azure.WebJobs.Extensions.*
obory názvů.
Následující příklad ukazuje aktivační událost pub/sub u události set s výstupní vazbou na stejnou instanci Redis. Událost set aktivuje mezipaměť a výstupní vazba vrátí příkaz delete pro klíč, který funkci aktivoval.
Důležité
Pro funkce .NET se doporučuje použití izolovaného modelu pracovního procesu přes model v procesu. Porovnání modelů pracovních procesů v procesu a izolovaných pracovních procesů najdete v rozdílech mezi izolovaným modelem pracovního procesu a modelem v procesu pro .NET ve službě 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 };
}
}
}
Následující příklad ukazuje aktivační událost pub/sub u události set s výstupní vazbou na stejnou instanci Redis. Událost set aktivuje mezipaměť a výstupní vazba vrátí příkaz delete pro klíč, který funkci aktivoval.
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;
}
}
Tento příklad ukazuje aktivační událost pub/sub u události set s výstupní vazbou na stejnou instanci Redis. Událost set aktivuje mezipaměť a výstupní vazba vrátí příkaz delete pro klíč, který funkci aktivoval.
Vazby jsou definovány v souboru "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"
}
Tento kód ze index.js
souboru převezme klíč z triggeru a vrátí ho do výstupní vazby pro odstranění položky uložené v mezipaměti.
module.exports = async function (context, key) {
context.log("Deleting recently SET key '" + key + "'");
return key;
}
Tento příklad ukazuje aktivační událost pub/sub u události set s výstupní vazbou na stejnou instanci Redis. Událost set aktivuje mezipaměť a výstupní vazba vrátí příkaz delete pro klíč, který funkci aktivoval.
Vazby jsou definovány v tomto function.json
souboru:
{
"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"
}
Tento kód ze run.ps1
souboru převezme klíč z triggeru a předá ho výstupní vazbě pro odstranění položky uložené v mezipaměti.
param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key
Tento příklad ukazuje aktivační událost pub/sub u události set s výstupní vazbou na stejnou instanci Redis. Událost set aktivuje mezipaměť a výstupní vazba vrátí příkaz delete pro klíč, který funkci aktivoval.
Vazby jsou definovány v tomto function.json
souboru:
{
"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"
}
Tento kód ze __init__.py
souboru převezme klíč z triggeru a předá ho výstupní vazbě pro odstranění položky uložené v mezipaměti.
import logging
def main(key: str) -> str:
logging.info("Deleting recently SET key '" + key + "'")
return key
Atributy
Poznámka:
Pro tuto vazbu jsou podporovány všechny příkazy.
Způsob, jakým definujete výstupní parametr vazby, závisí na tom, jestli vaše funkce jazyka C# běží v procesu nebo v izolovaném pracovním procesu.
Výstupní vazba je definována tímto způsobem:
Definice | Příklad | Popis |
---|---|---|
U parametru out |
[Redis(<Connection>, <Command>)] out string <Return_Variable> |
Řetězcová proměnná vrácená metodou je hodnota klíče, kterou vazba používá ke spuštění příkazu proti konkrétní mezipaměti. |
V tomto případě typ vrácený metodou je hodnota klíče, kterou vazba používá ke spuštění příkazu proti konkrétní mezipaměti.
Pokud má funkce více výstupních vazeb, můžete místo toho použít atribut vazby na vlastnost typu, která je hodnota klíče, kterou vazba používá ke spuštění příkazu proti konkrétní mezipaměti. Další informace naleznete v tématu Více výstupních vazeb.
Bez ohledu na režim procesu jazyka C# podporuje atribut výstupní vazby stejné vlastnosti:
Vlastnost atributu | Popis |
---|---|
Connection |
Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password... |
Command |
Příkaz redis-cli, který se má spustit v mezipaměti, například: DEL |
Poznámky
Poznámka RedisOutput
podporuje tyto vlastnosti:
Vlastnost | Popis |
---|---|
name |
Název konkrétní vstupní vazby. |
connection |
Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password... |
command |
Příkaz redis-cli, který se má spustit v mezipaměti, například: DEL |
Konfigurace
Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json .
Vlastnost | Popis |
---|---|
name |
Název konkrétní vstupní vazby. |
connection |
Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password... |
command |
Příkaz redis-cli, který se má spustit v mezipaměti, například: DEL |
Kompletní příklady najdete v části Příklad.
Využití
Výstup vrátí řetězec, což je klíč položky mezipaměti, na kterém se použije konkrétní příkaz.
Existují tři typy připojení, která jsou ve vašich nasazeních povolená z instance Azure Functions do služby Redis Cache. Pro místní vývoj můžete také použít tajné kódy instančního objektu. appsettings
Použijte ke konfiguraci každého z následujících typů ověřování klientů za předpokladuConnection
, že byla nastavena Redis
na funkci.