Azure Cache for Redis-utdatabindning för Azure Functions

Med Azure Cache for Redis-utdatabindningarna kan du ändra nycklarna i en cache baserat på en uppsättning tillgängliga utlösare i cacheminnet.

Information om konfiguration och konfigurationsinformation finns i översikten.

Viktigt!

Node.js v4-modellen för Functions stöds ännu inte av Azure Cache for Redis-tillägget. Mer information om hur v4-modellen fungerar finns i utvecklarguiden för Azure Functions Node.js. Mer information om skillnaderna mellan v3 och v4 finns i migreringsguiden.

Viktigt!

Python v2-modellen för Functions stöds ännu inte av Azure Cache for Redis-tillägget. Mer information om hur v2-modellen fungerar finns i utvecklarhandboken för Azure Functions Python.

Exempel

En C#-funktion kan skapas med något av följande C#-lägen:

  • Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework. Tillägg för isolerade arbetsprocessfunktioner använder Microsoft.Azure.Functions.Worker.Extensions.* namnområden.
  • Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen. I en variant av den här modellen kan Functions köras med C#-skript, vilket främst stöds för redigering av C#-portalen. Tillägg för in-process-funktioner använder Microsoft.Azure.WebJobs.Extensions.* namnområden.

I följande exempel visas en pub/sub-utlösare för den angivna händelsen med en utdatabindning till samma Redis-instans. Set-händelsen utlöser cachen och utdatabindningen returnerar ett borttagningskommando för nyckeln som utlöste funktionen.

Viktigt!

För .NET-funktioner rekommenderas användning av den isolerade arbetsmodellen över den pågående modellen. En jämförelse av de processbaserade och isolerade arbetsmodellerna finns i skillnader mellan den isolerade arbetsmodellen och den processbaserade modellen för .NET på Azure Functions.


using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisOutputBinding
{
    internal class SetDeleter
    {
        [Function(nameof(SetDeleter))]
        [RedisOutput(Common.connectionString, "DEL")]
        public static string Run(
            [RedisPubSubTrigger(Common.connectionString, "__keyevent@0__:set")] string key,
            ILogger logger)
        {
            logger.LogInformation($"Deleting recently SET key '{key}'");
            return key;
        }
    }
}
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 };
        }
    }
}

I följande exempel visas en pub/sub-utlösare för den angivna händelsen med en utdatabindning till samma Redis-instans. Set-händelsen utlöser cachen och utdatabindningen returnerar ett borttagningskommando för nyckeln som utlöste funktionen.

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

Det här exemplet visar en pub/sub-utlösare för den angivna händelsen med en utdatabindning till samma Redis-instans. Set-händelsen utlöser cachen och utdatabindningen returnerar ett borttagningskommando för nyckeln som utlöste funktionen.

Bindningarna definieras i den här filen "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"
}

Den här koden från index.js filen tar nyckeln från utlösaren och returnerar den till utdatabindningen för att ta bort det cachelagrade objektet.

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

Det här exemplet visar en pub/sub-utlösare för den angivna händelsen med en utdatabindning till samma Redis-instans. Set-händelsen utlöser cachen och utdatabindningen returnerar ett borttagningskommando för nyckeln som utlöste funktionen.

Bindningarna definieras i den här function.json filen:

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

Den här koden från run.ps1 filen tar nyckeln från utlösaren och skickar den till utdatabindningen för att ta bort det cachelagrade objektet.

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

Det här exemplet visar en pub/sub-utlösare för den angivna händelsen med en utdatabindning till samma Redis-instans. Set-händelsen utlöser cachen och utdatabindningen returnerar ett borttagningskommando för nyckeln som utlöste funktionen.

Bindningarna definieras i den här function.json filen:

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

Den här koden från __init__.py filen tar nyckeln från utlösaren och skickar den till utdatabindningen för att ta bort det cachelagrade objektet.

import logging

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

Attribut

Kommentar

Alla kommandon stöds för den här bindningen.

Hur du definierar en utdatabindningsparameter beror på om C#-funktionerna körs i processen eller i en isolerad arbetsprocess.

Utdatabindningen definieras på följande sätt:

Definition Exempel beskrivning
På en out parameter [Redis(<Connection>, <Command>)] out string <Return_Variable> Strängvariabeln som returneras av metoden är ett nyckelvärde som bindningen använder för att köra kommandot mot den specifika cachen.

I det här fallet är den typ som returneras av metoden ett nyckelvärde som bindningen använder för att köra kommandot mot den specifika cachen.

När funktionen har flera utdatabindningar kan du i stället använda bindningsattributet för egenskapen för en typ som är ett nyckelvärde, som bindningen använder för att köra kommandot mot den specifika cachen. Mer information finns i Flera utdatabindningar.


Oavsett C#-processläget stöds samma egenskaper av utdatabindningsattributet:

Attributegenskap beskrivning
Connection Namnet på programinställningen som innehåller cacheminnet niska veze, till exempel:<cacheName>.redis.cache.windows.net:6380,password...
Command Redis-cli-kommandot som ska köras i cacheminnet, till exempel: DEL.

Kommentarer

Kommentaren RedisOutput stöder följande egenskaper:

Property beskrivning
name Namnet på den specifika indatabindningen.
connection Namnet på programinställningen som innehåller cacheminnet niska veze, till exempel:<cacheName>.redis.cache.windows.net:6380,password...
command Redis-cli-kommandot som ska köras i cacheminnet, till exempel: DEL.

Konfiguration

I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .

Property beskrivning
name Namnet på den specifika indatabindningen.
connection Namnet på programinställningen som innehåller cacheminnet niska veze, till exempel:<cacheName>.redis.cache.windows.net:6380,password...
command Redis-cli-kommandot som ska köras i cacheminnet, till exempel: DEL.

Se avsnittet Exempel för fullständiga exempel.

Användning

Utdata returnerar en sträng, som är nyckeln för cacheposten som använder det specifika kommandot.

Det finns tre typer av anslutningar som tillåts från en Azure Functions-instans till en Redis Cache i dina distributioner. För lokal utveckling kan du också använda tjänstens huvudnamnshemligheter. appsettings Använd för att konfigurera var och en av följande typer av klientautentisering, förutsatt att har Connection angetts till Redis i funktionen.