cache di Azure per Redis binding di input per Funzioni di Azure
Quando viene eseguita una funzione, l'associazione di input cache di Azure per Redis recupera i dati da una cache e lo passa alla funzione come parametro di input.
Per informazioni sui dettagli di impostazione e configurazione, vedere la panoramica.
Ambito della disponibilità per le associazioni di funzioni
Tipo di associazione | Redis gestito di Azure | Cache Redis di Azure |
---|---|---|
Input | Sì | Sì |
Importante
Quando si usano Redis gestiti di Azure o i livelli Enterprise di cache di Azure per Redis, usare la porta 10000 anziché la porta 6380 o 6379.
Importante
Il modello Node.js v4 per Funzioni non è ancora supportato dall'estensione cache di Azure per Redis. Per altre informazioni sul funzionamento del modello v4, vedere la guida per gli sviluppatori di Node.js per Funzioni di Azure. Altre informazioni sulle differenze tra i modelli v3 e v4 sono disponibili nella guida alla migrazione.
Importante
Il modello Python v2 per Funzioni non è ancora supportato dall'estensione cache di Azure per Redis. Per altre informazioni sul funzionamento del modello v2, vedere la guida per gli sviluppatori di Python per Funzioni di Azure.
Esempio
È possibile creare una funzione C# usando una delle modalità C# seguenti:
- Modello di lavoro isolato: funzione C# compilata eseguita in un processo di lavoro isolato dal runtime. Il processo di lavoro isolato è necessario per supportare le funzioni C# in esecuzione in LTS e versioni non LTS .NET e .NET Framework. Le estensioni per le funzioni del processo di lavoro isolato usano
Microsoft.Azure.Functions.Worker.Extensions.*
spazi dei nomi. - Modello in-process: funzione C# compilata eseguita nello stesso processo del runtime di Funzioni. In una variante di questo modello, le funzioni possono essere eseguite usando script C#, che è supportato principalmente per la modifica del portale C#. Le estensioni per le funzioni in-process usano
Microsoft.Azure.WebJobs.Extensions.*
spazi dei nomi.
Importante
Per le funzioni .NET, è consigliabile usare il modello di lavoro isolato nel modello di In-Process. Per un confronto tra i modelli di lavoro in-process e isolati, vedere le differenze tra il modello di lavoro isolato e il modello in-process per .NET in Funzioni di Azure.
Il codice seguente usa la chiave del trigger pub/sub per ottenere e registrare il valore da un'associazione di input usando un GET
comando :
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}'");
}
}
}
Altri esempi per l'associazione di input cache di Azure per Redis sono disponibili nel repository GitHub.
Il codice seguente usa la chiave del trigger pub/sub per ottenere e registrare il valore da un'associazione di input usando un GET
comando :
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 + "'");
}
}
Questo function.json definisce sia un trigger pub/sub che un'associazione di input al messaggio GET in un'istanza di cache di Azure per 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"
}
Questo codice JavaScript (da index.js) recupera e registra il valore memorizzato nella cache correlato alla chiave fornita dal trigger pub/sub.
module.exports = async function (context, key, value) {
context.log("Key '" + key + "' was set to value '" + value + "'");
}
Questo function.json definisce sia un trigger pub/sub che un'associazione di input al messaggio GET in un'istanza di cache di Azure per 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"
}
Questo codice di PowerShell (da run.ps1) recupera e registra il valore memorizzato nella cache correlato alla chiave fornita dal trigger pub/sub.
param($key, $value, $TriggerMetadata)
Write-Host "Key '$key' was set to value '$value'"
Nell'esempio seguente viene usato un trigger pub/sub con un'associazione di input al messaggio GET in un'istanza di cache di Azure per Redis. L'esempio dipende dal fatto che si usi il modello di programmazione Python v1 o v2.
Questo function.json definisce sia un trigger pub/sub che un'associazione di input al messaggio GET in un'istanza di cache di Azure per 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"
}
]
}
Questo codice Python (da __init__.py) recupera e registra il valore memorizzato nella cache correlato alla chiave fornita dal trigger pub/sub:
import logging
def main(key: str, value: str):
logging.info("Key '" + key + "' was set to value '" + value + "'")
Queste proprietà sono descritte nella sezione configuration.
Attributi
Nota
Non tutti i comandi sono supportati per questa associazione. Al momento sono supportati solo i comandi di lettura che restituiscono un singolo output. L'elenco completo è disponibile qui
Proprietà dell'attributo | Descrizione |
---|---|
Connection |
Nome dell'impostazione dell'applicazione che contiene la cache stringa di connessione, ad esempio:<cacheName>.redis.cache.windows.net:6380,password... |
Command |
Comando redis-cli da eseguire nella cache con tutti gli argomenti separati da spazi, ad esempio : GET key , HGET key field . |
Annotazioni
L'annotazione RedisInput
supporta queste proprietà:
Proprietà | Descrizione |
---|---|
name |
Nome dell'associazione di input specifica. |
connection |
Nome dell'impostazione dell'applicazione che contiene la cache stringa di connessione, ad esempio:<cacheName>.redis.cache.windows.net:6380,password... |
command |
Comando redis-cli da eseguire nella cache con tutti gli argomenti separati da spazi, ad esempio: GET key o HGET key field . |
Impostazione
Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json.
Proprietà di function.json | Descrizione |
---|---|
connection |
Nome dell'impostazione dell'applicazione che contiene la cache stringa di connessione, ad esempio:<cacheName>.redis.cache.windows.net:6380,password... |
command |
Comando redis-cli da eseguire nella cache con tutti gli argomenti separati da spazi, ad esempio : GET key , HGET key field . |
Nota
Python v2 e Node.js v4 per Funzioni non usano function.json per definire la funzione. Entrambe queste nuove versioni del linguaggio non sono attualmente supportate dalle associazioni di Cache Redis di Azure.
Per esempi completi, vedere la sezione di esempio.
Utilizzo
L'associazione di input prevede di ricevere una stringa dalla cache.
Quando si usa un tipo personalizzato come parametro di associazione, l'estensione tenta di deserializzare una stringa in formato JSON nel tipo personalizzato di questo parametro.