Sdílet prostřednictvím


Výstupní vazba Azure Cache for Redis pro Azure Functions

Výstupní vazby Azure Cache for Redis umožňují změnit klíče v mezipaměti na základě sady dostupných aktivačních událostí v mezipaměti.

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ů.

Následující příklad ukazuje aktivační událost pub/sub u události set s výstupní vazbou na stejnou instanci Redis. Událost set aktivuje mezipaměť a výstupní vazba vrátí příkaz delete pro klíč, který funkci aktivoval.

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.

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 };
        }
    }
}

Následující příklad ukazuje aktivační událost pub/sub u události set s výstupní vazbou na stejnou instanci Redis. Událost set aktivuje mezipaměť a výstupní vazba vrátí příkaz delete pro klíč, který funkci aktivoval.

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;
    }
}

Tento příklad ukazuje aktivační událost pub/sub u události set s výstupní vazbou na stejnou instanci Redis. Událost set aktivuje mezipaměť a výstupní vazba vrátí příkaz delete pro klíč, který funkci aktivoval.

Vazby jsou definovány v tomto souboru 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"
}

Tento kód ze index.js souboru převezme klíč z triggeru a vrátí ho do výstupní vazby pro odstranění položky uložené v mezipaměti.

module.exports = async function (context, key) {
    context.log("Deleting recently SET key '" + key + "'");
    return key;
}

Tento příklad ukazuje aktivační událost pub/sub u události set s výstupní vazbou na stejnou instanci Redis. Událost set aktivuje mezipaměť a výstupní vazba vrátí příkaz delete pro klíč, který funkci aktivoval.

Vazby jsou definovány v tomto function.json souboru:

{
    "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"
}

Tento kód ze run.ps1 souboru převezme klíč z triggeru a předá ho výstupní vazbě pro odstranění položky uložené v mezipaměti.

param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key

Tento příklad ukazuje aktivační událost pub/sub u události set s výstupní vazbou na stejnou instanci Redis. Událost set aktivuje mezipaměť a výstupní vazba vrátí příkaz delete pro klíč, který funkci aktivoval.

Vazby jsou definovány v tomto function.json souboru:

{
    "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"
}

Tento kód ze __init__.py souboru převezme klíč z triggeru a předá ho výstupní vazbě pro odstranění položky uložené v mezipaměti.

import logging

def main(key: str) -> str:
    logging.info("Deleting recently SET key '" + key + "'")
    return key

Atributy

Poznámka:

Pro tuto vazbu jsou podporovány všechny příkazy.

Způsob, jakým definujete výstupní parametr vazby, závisí na tom, jestli vaše funkce jazyka C# běží v procesu nebo v izolovaném pracovním procesu.

Výstupní vazba je definována tímto způsobem:

Definice Příklad Popis
U parametru out [Redis(<Connection>, <Command>)] out string <Return_Variable> Řetězcová proměnná vrácená metodou je hodnota klíče, kterou vazba používá ke spuštění příkazu proti konkrétní mezipaměti.

V tomto případě typ vrácený metodou je hodnota klíče, kterou vazba používá ke spuštění příkazu proti konkrétní mezipaměti.

Pokud má funkce více výstupních vazeb, můžete místo toho použít atribut vazby na vlastnost typu, která je hodnota klíče, kterou vazba používá ke spuštění příkazu proti konkrétní mezipaměti. Další informace naleznete v tématu Více výstupních vazeb.


Bez ohledu na režim procesu jazyka C# podporuje atribut výstupní vazby stejné vlastnosti:

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, například: DEL

Poznámky

Poznámka RedisOutput 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, například: DEL

Konfigurace

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

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, například: DEL

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

Využití

Výstup vrátí řetězec, což je klíč položky mezipaměti, na kterém se použije konkrétní příkaz.

Existují tři typy připojení, která jsou ve vašich nasazeních povolená z instance Azure Functions do služby Redis Cache. Pro místní vývoj můžete také použít tajné kódy instančního objektu. appsettings Použijte ke konfiguraci každého z následujících typů ověřování klientů za předpokladuConnection, že byla nastavena Redis na funkci.