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.

Ambito della disponibilità per le associazioni di funzioni

Tipo di associazione Redis gestito di Azure Cache Redis di Azure
Input

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.