Powiązanie wejściowe usługi Azure Cache for Redis dla usługi Azure Functions
Po uruchomieniu funkcji powiązanie wejściowe usługi Azure Cache for Redis pobiera dane z pamięci podręcznej i przekazuje je do funkcji jako parametr wejściowy.
Aby uzyskać informacje na temat konfiguracji i konfiguracji, zobacz omówienie.
Zakres dostępności powiązań funkcji
Typ powiązania | Azure Managed Redis | Azure Cache for Redis |
---|---|---|
Dane wejściowe | Tak | Tak |
Ważne
W przypadku korzystania z usługi Azure Managed Redis lub warstw Enterprise usługi Azure Cache for Redis użyj portu 10000, a nie portu 6380 lub 6379.
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.
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.
Poniższy kod używa klucza z wyzwalacza pub/sub, aby uzyskać i zarejestrować wartość z powiązania wejściowego GET
przy użyciu polecenia :
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}'");
}
}
}
Więcej przykładów dla powiązania wejściowego usługi Azure Cache for Redis jest dostępnych w repozytorium GitHub.
Poniższy kod używa klucza z wyzwalacza pub/sub, aby uzyskać i zarejestrować wartość z powiązania wejściowego GET
przy użyciu polecenia :
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 + "'");
}
}
Ten function.json definiuje zarówno wyzwalacz pub/sub, jak i powiązanie wejściowe z komunikatem GET w wystąpieniu usługi Azure Cache for Redis:
{
"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"
}
Ten kod JavaScript (z index.js) pobiera i rejestruje buforowane wartości powiązane z kluczem dostarczonym przez wyzwalacz pub/sub.
module.exports = async function (context, key, value) {
context.log("Key '" + key + "' was set to value '" + value + "'");
}
Ten function.json definiuje zarówno wyzwalacz pub/sub, jak i powiązanie wejściowe z komunikatem GET w wystąpieniu usługi Azure Cache for Redis:
{
"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"
}
Ten kod programu PowerShell (z pliku run.ps1) pobiera i rejestruje buforowane wartości powiązane z kluczem dostarczonym przez wyzwalacz pub/sub.
param($key, $value, $TriggerMetadata)
Write-Host "Key '$key' was set to value '$value'"
W poniższym przykładzie użyto wyzwalacza pub/sub z powiązaniem wejściowym do komunikatu GET w wystąpieniu usługi Azure Cache for Redis. Przykład zależy od tego, czy używasz modelu programowania w wersji 1, czy w wersji 2 języka Python.
Ten function.json definiuje zarówno wyzwalacz pub/sub, jak i powiązanie wejściowe z komunikatem GET w wystąpieniu usługi Azure Cache for Redis:
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyevent@0__:set",
"name": "key",
"direction": "in"
},
{
"type": "redis",
"connection": "redisConnectionString",
"command": "GET {Message}",
"name": "value",
"direction": "in"
}
]
}
Ten kod języka Python (z __init__.py) pobiera i rejestruje buforowane wartości powiązane z kluczem dostarczonym przez wyzwalacz pub/sub:
import logging
def main(key: str, value: str):
logging.info("Key '" + key + "' was set to value '" + value + "'")
W sekcji konfiguracji opisano te właściwości.
Atrybuty
Uwaga
Nie wszystkie polecenia są obsługiwane dla tego powiązania. Obecnie obsługiwane są tylko polecenia odczytu, które zwracają pojedyncze dane wyjściowe. Pełną listę można znaleźć tutaj
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 ze wszystkimi argumentami oddzielonymi spacjami, takimi jak : GET key , HGET key field . |
Adnotacje
Adnotacja RedisInput
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 ze wszystkimi argumentami oddzielonymi spacjami, takimi jak: GET key lub HGET key field . |
Konfigurowanie
W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json.
właściwość function.json | 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 ze wszystkimi argumentami oddzielonymi spacjami, takimi jak : GET key , HGET key field . |
Uwaga
Język Python w wersji 2 i Node.js w wersji 4 dla usługi Functions nie używają function.json do definiowania funkcji. Obie te nowe wersje językowe nie są obecnie obsługiwane przez powiązania usługi Azure Redis Cache.
Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.
Użycie
Powiązanie wejściowe oczekuje otrzymania ciągu z pamięci podręcznej.
Jeśli używasz niestandardowego typu jako parametru powiązania, rozszerzenie próbuje deserializować ciąg sformatowany w formacie JSON do niestandardowego typu tego parametru.