Condividi tramite


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.

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 sviluppatori di Funzioni di Azure Node.js. Per altre informazioni sulle differenze tra v3 e v4, vedere la 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 sviluppatori python 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 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) esegue un nuovo tentativo 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) ritenta 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.