Sdílet prostřednictvím


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.

Rozsah dostupnosti pro vazby funkcí

Typ vazby Azure Managed Redis Azure Cache for Redis
Vstup Ano Yes

Důležité

Pokud používáte Azure Managed Redis nebo podnikové úrovně Azure Cache for Redis, použijte místo portu 6380 nebo 6379 port 10000.

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 kód JavaScriptu (z index.js) načte a zaznamená 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) načte a zaznamená 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.