Condividi tramite


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

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 .