Vstupní vazba Azure Cache for Redis pro Azure Functions

Při spuštění funkce vstupní vazba Azure Cache for Redis načte data z mezipaměti a předá ji do vaší funkce jako vstupní parametr.

Informace o nastavení a konfiguraci najdete v přehledu.

Důležité

Rozšíření Azure Cache for Redis zatím nepodporuje model Node.js v4 pro Functions. Další podrobnosti o tom, jak model v4 funguje, najdete v příručce pro vývojáře služby Azure Functions Node.js. Další informace o rozdílech mezi v3 a v4 najdete v průvodci migrací.

Důležité

Rozšíření Azure Cache for Redis zatím nepodporuje model Pythonu v2 pro Functions. Další podrobnosti o tom, jak model v2 funguje, najdete v příručce pro vývojáře v Pythonu pro Azure Functions.

Příklad

Funkci jazyka C# je možné vytvořit pomocí jednoho z následujících režimů jazyka C#:

  • Izolovaný model pracovního procesu: Kompilovaná funkce jazyka C#, která běží v pracovním procesu, který je izolovaný od modulu runtime. Izolovaný pracovní proces je nutný pro podporu funkcí C# spuštěných na LTS a jiných verzích než LTS .NET a rozhraní .NET Framework. Rozšíření pro izolované funkce pracovních procesů používají Microsoft.Azure.Functions.Worker.Extensions.* obory názvů.
  • Model v procesu: Zkompilovaná funkce jazyka C#, která běží ve stejném procesu jako modul runtime služby Functions. Ve variantě tohoto modelu je možné spouštět funkce pomocí skriptování jazyka C#, což je podporováno především pro úpravy portálu C#. Rozšíření pro procesní funkce používají Microsoft.Azure.WebJobs.Extensions.* obory názvů.

Důležité

Pro funkce .NET se doporučuje použití izolovaného modelu pracovního procesu přes model v procesu. Porovnání modelů pracovních procesů v procesu a izolovaných pracovních procesů najdete v rozdílech mezi izolovaným modelem pracovního procesu a modelem v procesu pro .NET ve službě Azure Functions.

Následující kód používá klíč z triggeru pub/sub k získání a protokolování hodnoty ze vstupní vazby pomocí GET příkazu:

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}'");
        }
    }
}

Další ukázky pro vstupní vazbu Azure Cache for Redis jsou k dispozici v úložišti GitHub.

Následující kód používá klíč z triggeru pub/sub k získání a protokolování hodnoty ze vstupní vazby pomocí GET příkazu:

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 + "'");
    }
}

Tento function.json definuje aktivační událost pub/sub i vstupní vazbu na zprávu GET v instanci Azure Cache for 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"
}

Tento javascriptový kód (z index.js) se opakuje a protokoluje hodnotu uloženou v mezipaměti související s klíčem poskytnutým triggerem pub/sub.


module.exports = async function (context, key, value) {
    context.log("Key '" + key + "' was set to value '" + value + "'");
}

Tento function.json definuje aktivační událost pub/sub i vstupní vazbu na zprávu GET v instanci Azure Cache for 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"
}

Tento kód PowerShellu (z run.ps1) načte a zaznamená hodnotu uloženou v mezipaměti související s klíčem poskytnutým triggerem pub/sub.

param($key, $value, $TriggerMetadata)
Write-Host "Key '$key' was set to value '$value'"

Následující příklad používá trigger pub/sub se vstupní vazbou ke zprávě GET v instanci Azure Cache for Redis. Tento příklad závisí na tom, jestli používáte programovací model v1 nebo v2 Pythonu.

Tento function.json definuje aktivační událost pub/sub i vstupní vazbu na zprávu GET v instanci Azure Cache for 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"
        }
    ]
}

Tento kód Pythonu (z __init__.py) se opakuje a protokoluje hodnotu uloženou v mezipaměti související s klíčem poskytnutým triggerem pub/sub:


import logging

def main(key: str, value: str):
    logging.info("Key '" + key + "' was set to value '" + value + "'")

Oddíl konfigurace vysvětluje tyto vlastnosti.

Atributy

Poznámka:

Pro tuto vazbu nejsou podporovány všechny příkazy. V tuto chvíli se podporují pouze příkazy pro čtení, které vracejí jeden výstup. Úplný seznam najdete tady.

Vlastnost atributu Popis
Connection Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password...
Command Příkaz redis-cli, který se má spustit v mezipaměti se všemi argumenty oddělenými mezerami, například: GET key, HGET key field.

Poznámky

Poznámka RedisInput podporuje tyto vlastnosti:

Vlastnost Popis
name Název konkrétní vstupní vazby.
connection Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password...
command Příkaz redis-cli, který se má spustit v mezipaměti se všemi argumenty oddělenými mezerami, například: GET key nebo HGET key field.

Konfigurace

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json.

vlastnost function.json Popis
connection Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password...
command Příkaz redis-cli, který se má spustit v mezipaměti se všemi argumenty oddělenými mezerami, například: GET key, HGET key field.

Poznámka:

Python v2 a Node.js v4 pro funkce nepoužívají k definování funkce function.json. Obě tyto nové jazykové verze nejsou v současné době podporovány vazbami Azure Redis Cache.

Kompletní příklady najdete v části Příklad.

Využití

Vstupní vazba očekává, že z mezipaměti obdrží řetězec.

Pokud jako parametr vazby použijete vlastní typ, rozšíření se pokusí deserializovat řetězec ve formátu JSON do vlastního typu tohoto parametru.