Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le associazioni di output di Azure Redis gestite consentono di modificare le chiavi in una cache in base a un set di trigger disponibili nella cache.
Per informazioni sui dettagli di impostazione e configurazione, vedere la panoramica.
Ambito della disponibilità per le associazioni di funzioni
| Tipo di associazione | Azure Redis gestito | Azure Cache for Redis |
|---|---|---|
| Output | Sì | Sì |
Importante
Quando si usa Azure Redis gestito o i livelli Enterprise di Azure Cache for Redis, usare la porta 10000 anziché la porta 6380 o 6379.
Importante
Il modello Node.js v4 per Funzioni non è ancora supportato dall'estensione Azure Cache for Redis. Per altre informazioni sul funzionamento del modello v4, vedere la guida per sviluppatori Azure Functions Node.js. 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 Azure Cache for Redis. Per altre informazioni sul funzionamento del modello v2, vedere la guida per sviluppatori Azure Functions Python.
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 versioni LTS e non LTS .NET e .NET Framework. Le estensioni per le funzioni del processo di lavoro isolato usano spazi dei nomi
Microsoft.Azure.Functions.Worker.Extensions.*. -
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 spazi dei nomi
Microsoft.Azure.WebJobs.Extensions.*.
L'esempio seguente mostra un trigger pub/sub sull'evento set con un'associazione di output alla stessa istanza di Redis. L'evento set attiva la cache e l'associazione di output restituisce un comando delete per la chiave che ha attivato la funzione.
Importante
Per le funzioni di .NET, è consigliabile usare il modello nel modello in-process>. Per un confronto tra i modelli in-process e isolated worker, vedere le differenze tra il modello isolated worker e il modello in-process per .NET su 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 };
}
}
}
L'esempio seguente mostra un trigger pub/sub sull'evento set con un'associazione di output alla stessa istanza di Redis. L'evento set attiva la cache e l'associazione di output restituisce un comando delete per la chiave che ha attivato la funzione.
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;
}
}
Questo esempio mostra un trigger pub/sub sull'evento set con un'associazione di output alla stessa istanza di Redis. L'evento set attiva la cache e l'associazione di output restituisce un comando delete per la chiave che ha attivato la funzione.
Le associazioni sono definite nel file '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"
}
Questo codice dal index.js file accetta la chiave dal trigger e la restituisce all'associazione di output per eliminare l'elemento memorizzato nella cache.
module.exports = async function (context, key) {
context.log("Deleting recently SET key '" + key + "'");
return key;
}
Questo esempio mostra un trigger pub/sub sull'evento set con un'associazione di output alla stessa istanza di Redis. L'evento set attiva la cache e l'associazione di output restituisce un comando delete per la chiave che ha attivato la funzione.
Le associazioni sono definite in questo function.json file:
{
"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"
}
Questo codice dal run.ps1 file accetta la chiave dal trigger e la passa all'associazione di output per eliminare l'elemento memorizzato nella cache.
param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key
Questo esempio mostra un trigger pub/sub sull'evento set con un'associazione di output alla stessa istanza di Redis. L'evento set attiva la cache e l'associazione di output restituisce un comando delete per la chiave che ha attivato la funzione.
Le associazioni sono definite in questo function.json file:
{
"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"
}
Questo codice dal __init__.py file accetta la chiave dal trigger e la passa all'associazione di output per eliminare l'elemento memorizzato nella cache.
import logging
def main(key: str) -> str:
logging.info("Deleting recently SET key '" + key + "'")
return key
Attributi
Nota
Tutti i comandi sono supportati per questa associazione.
Il modo in cui si definisce un parametro di associazione di output dipende dal fatto che le funzioni C# vengono eseguite in-process o in un processo di lavoro isolato.
L'associazione di output viene definita in questo modo:
| Definizione | Esempio | Descrizione |
|---|---|---|
In un out parametro |
[Redis(<Connection>, <Command>)] out string <Return_Variable> |
La variabile stringa restituita dal metodo è un valore di chiave usato dall'associazione per eseguire il comando sulla cache specifica. |
In questo caso, il tipo restituito dal metodo è un valore chiave usato dall'associazione per eseguire il comando sulla cache specifica.
Quando la funzione include più associazioni di output, è invece possibile applicare l'attributo di associazione alla proprietà di un tipo che è un valore di chiave, che l'associazione usa per eseguire il comando sulla cache specifica. Per altre informazioni, vedere Più associazioni di output.
Indipendentemente dalla modalità di processo C#, le stesse proprietà sono supportate dall'attributo di associazione di output:
| Proprietà dell'attributo | Descrizione |
|---|---|
Connection |
Nome dell'impostazione application che contiene il connection string della cache, ad esempio: <cacheName>.redis.cache.windows.net:6380,password... |
Command |
Comando redis-cli da eseguire nella cache, ad esempio : DEL. |
Annotazioni
L'annotazione RedisOutput supporta queste proprietà:
| Proprietà | Descrizione |
|---|---|
name |
Nome dell'associazione di input specifica. |
connection |
Nome dell'impostazione application che contiene il connection string della cache, ad esempio: <cacheName>.redis.cache.windows.net:6380,password... |
command |
Comando redis-cli da eseguire nella cache, ad esempio : DEL. |
Impostazione
Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json.
| Proprietà | Descrizione |
|---|---|
name |
Nome dell'associazione di input specifica. |
connection |
Nome dell'impostazione application che contiene il connection string della cache, ad esempio: <cacheName>.redis.cache.windows.net:6380,password... |
command |
Comando redis-cli da eseguire nella cache, ad esempio : DEL. |
Per esempi completi, vedere la sezione di esempio.
Utilizzo
L'output restituisce una stringa, ovvero la chiave della voce della cache in cui applicare il comando specifico.
Esistono tre tipi di connessioni consentite da un'istanza di Azure Functions a una cache Redis nelle distribuzioni. Per lo sviluppo locale, è anche possibile usare i segreti dell'entità servizio.
appsettings Usare per configurare ognuno dei tipi di autenticazione client seguenti, presupponendo che sia Connection stato impostato su Redis nella funzione .
Importante
Per una sicurezza ottimale, l'app per le funzioni deve usare Microsoft Entra ID con identità gestite per autorizzare le richieste nella cache, se possibile. L'autorizzazione tramite Microsoft Entra ID e identità gestite offre una maggiore sicurezza e facilità d'uso tramite l'autorizzazione della chiave di accesso condiviso. Per altre informazioni sull'uso di identità gestite con la cache, vedere Use Microsoft Entra ID for cache authentication.