cache di Azure per Redis binding di output per Funzioni di Azure
Le associazioni di output cache di Azure per Redis 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 | Redis gestito di Azure | Cache Redis di Azure |
---|---|---|
Output | 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.
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 .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.
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 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, ad esempio : DEL . |
Annotazioni
L'annotazione RedisOutput
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, 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 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, 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 Funzioni di Azure 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 .